javascript - 无法从 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 吗?
解决方案
由于您是动态创建元素,因此在执行 scriptLoaded() 之前不会出现错误(我猜是来自 webpack)。确保 src 路径正确。请注意,dist 文件夹通常是 webpack 的输出文件夹,如果您在 dist 文件夹中运行包,则不应在路径中指定该文件夹。当然,它可能会根据你的 webpack 配置而改变。简而言之,请确保链接您的“原始”文件,而不是 dist 文件夹中的文件。
推荐阅读
- python-3.x - Python API:同步多线程数据库查询
- palantir-foundry - 如何在 Foundry 上为用户设置主页?
- python - 将 GroupBy 对象转换为 Dataframe (pandas)
- pandas - 数据框:获取行并更新它
- pine-script - 在 Heiken Ashi 酒吧进行交易
- python - 如何根据另一个字典更新 Python 字典
- python - Selectorlib 在 chrome 预览中显示图像链接,但 scrapy 爬虫没有(阿里巴巴)
- sql - 关于这个 TSQL/XQuery 分隔符分隔符的问题
- css - 顺风台阶对齐
- c# - 使用 Moq 测试采用结构的方法