简而言之,我正在尝试调用我的第 3 方要求我包含的外部 JS 函数,以便使用他们的 API,但无法按预期工作。
根据我所读到的内容,我应该使用,例如 window.extFn()
在我的 index.html
中包含外部 JS 之后其中包含 extFn()
像这样
<script src="https://example.com/external.js"></script>
<-- 实际上不是这样的,请参阅更新 2,因为我在本地导入了库
...并且应该像这里的回答一样使用它:Call external Javascript function from react components无论该函数是在文件内部还是简单地定义在 index.html
上<script>
部分。这适用于我为测试而创建的 JS 文件。
//File: test.js
function test() {
return "Hello";
}
...导入了 JS 文件 script
像往常一样标记,并使用 console.log(window.test())
在我的 React 组件的 render()
中返回Hello
.
我尝试将导入从 body 移至 HTML head,反之亦然,但我仍然遇到的错误是:
TypeError: window.extFn is not a function
QuickCheckout.render
....
22 | }
23 |
24 | render() {
> 25 | window.extFn({
26 |
View compiled
▶ 20 stack frames were collapsed.
当我查看浏览器控制台时,由于某种原因我有(这似乎是关键问题)
Uncaught SyntaxError: Unexpected token < external.js:1
尝试过console.log(window.extFn)
它返回 undefined
所以我认为可能上述JS本身就是问题所在,但我对此束手无策。同时,我已向我的第 3 方支持团队发送了电子邮件,有人对此有任何建议吗?非常感谢。
更新:现在是我的test.js
上面的文件在我的实验中有效,生成 Unexpected token <
我的控制台中也出现错误...
更新 2:对于您遇到的问题,我深表歉意。但我实际上从本地源导入了 JS,因为必须移植他们的库,因为他们有 jQuery 2 而不是 3。
<script src="assets/js/external.js"></script>
令我愚蠢的是,我忘记了尾随的 /
。感谢您的帮助。
最佳答案
貌似external.js
的路径错误,返回的是html文件而不是js文件
您可以在chrome开发工具的“网络”选项卡中查看external.js
的请求返回的内容
关于javascript - ReactJS - 外部 JS 函数 "is not a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49446776/