ReactJS - 外部 JS 函数“不是函数”

IT技术 javascript reactjs
2022-07-17 01:30:18

简而言之,我正在尝试调用我的第 3 方要求我包含的外部 JS 函数,以便使用他们的 API,但不能按预期工作。

从我读过的内容来看,我应该使用,例如,window.extFn()在包含外部 JS 之后,index.html其中包含extFn()类似的内容

<script src="https://example.com/external.js"></script><-- 实际上不是这样,当我在本地导入库时,请参阅更新 2

...并且应该像这里的回答一样使用它:从react组件调用外部 Javascript 函数,无论所述函数是在文件中还是在index.html <script>部分中简单定义。这适用于我为测试而创建的 JS 文件。

//File: test.js
function test() {
    return "Hello";
}

...像往常一样导入带有script标签的 JS 文件,并console.log(window.test())在我的 React 组件的render()返回中使用Hello

我尝试将导入从正文移动到 HTML 头,反之亦然,但我仍然遇到的错误是:

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>

让我愚蠢的是,我忘记了尾随/谢谢您的帮助。

2个回答

好像路径external.js不对,返回的是html文件而不是js文件

external.js您可以在 chrome dev-tool 的“网络”选项卡上查看返回的请求

在文件的开头,在类定义之前,请添加

let extFn = window.extFn

然后在组件内部,您可以使用它。

extFn()//call inside component