在我的项目中,有一个定制的第三方库(一个构建文件),他们使用两个非AMD和AMD文件创建了这个库。大多数属性都直接暴露在窗口对象中。在我们的项目中,根据新的需求,我们必须使用requireJS以异步模式加载这个第三方库。我尝试使用shim配置,但是从第三方库中得到了一个错误,它说全局/窗口、全局/文档是必需的。
这就是我们现在遇到的错误。

有人能帮我吗?提前谢谢!
发布于 2021-06-02 20:13:56
看起来你的第三方库是video.js。Video.js正在创建两个全局对象global/window和global/document,它们似乎用于在没有窗口或文档的服务器上测试video.js。
您可以看到它们的定义这里,然后是导入。如果您愿意编辑文件(并在服务器端停止video.js测试),那么这是一个简单的解决方案。
您说过不想编辑库,所以让我们寻找其他解决方案。您可以继续这样定义它们:
define('global/window', [], () => {
return window;
});
define('global/document', ['global/window'], (window) => {
return window.document;
});然后加载video.js:
require(['video.7.5.0.min.js'], (videojs) => {
window.videojs = videojs;
// any other initialization you want here
});另外,知道您使用的是哪个版本的video.js可能会有所帮助。看来这可能是在7.11.1 (在这个公关中)中修复的,所以很有可能只是升级到那个版本或更高版本,从而使问题消失。
在本期中有很多关于这个问题的讨论,但是由于前面提到的PR,这个问题似乎已经结束了。
https://stackoverflow.com/questions/67692826
复制相似问题