首页 > 解决方案 > 无法从 React 中的窗口对象加载脚本对象

问题描述

我正在尝试使用下面的方法将三个 dxf 脚本加载到我的 React 应用程序中。

useEffect(() => {
    const script = document.createElement("script");
    script.type = 'text/javascript';
    script.src = '/dist/three-dxf.js';
    script.async = true;
    script.onload = () => scriptLoaded();

    document.getElementsByTagName('head')[0].appendChild(script); //also tried document.head and document.body
});

上面没有给出任何错误,但是,在 scriptLoaded 函数内部,当我尝试从窗口对象加载 ThreeDxf 对象时,它给出了未定义的,即

window.ThreeDxf.Viewer(...)给出错误TypeError: Cannot read property 'Viewer' of undefined

知道为什么窗口对象不包含 ThreeDxf 吗?

标签: javascriptreactjsreact-hooks

解决方案


由于您是动态创建元素,因此在执行 scriptLoaded() 之前不会出现错误(我猜是来自 webpack)。确保 src 路径正确。请注意,dist 文件夹通常是 webpack 的输出文件夹,如果您在 dist 文件夹中运行包,则不应在路径中指定该文件夹。当然,它可能会根据你的 webpack 配置而改变。简而言之,请确保链接您的“原始”文件,而不是 dist 文件夹中的文件。


推荐阅读