首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用requireJS加载具有非AMD和AMD库的现有自定义库

如何使用requireJS加载具有非AMD和AMD库的现有自定义库
EN

Stack Overflow用户
提问于 2021-05-25 17:26:04
回答 1查看 94关注 0票数 5

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

  1. 如何在不编辑第三方库的情况下解决当前项目中的上述错误?有可能吗?
  2. 如何在项目中使用这个第三方库属性,因为所有属性都直接公开给window对象。

这就是我们现在遇到的错误。

有人能帮我吗?提前谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-06-02 20:13:56

看起来你的第三方库是video.js。Video.js正在创建两个全局对象global/windowglobal/document,它们似乎用于在没有窗口或文档的服务器上测试video.js。

您可以看到它们的定义这里,然后是导入。如果您愿意编辑文件(并在服务器端停止video.js测试),那么这是一个简单的解决方案。

您说过不想编辑库,所以让我们寻找其他解决方案。您可以继续这样定义它们:

代码语言:javascript
复制
define('global/window', [], () => {
  return window;
});

define('global/document', ['global/window'], (window) => {
  return window.document;
});

然后加载video.js:

代码语言:javascript
复制
require(['video.7.5.0.min.js'], (videojs) => {
  window.videojs = videojs;
  // any other initialization you want here
});

另外,知道您使用的是哪个版本的video.js可能会有所帮助。看来这可能是在7.11.1 (在这个公关中)中修复的,所以很有可能只是升级到那个版本或更高版本,从而使问题消失。

本期中有很多关于这个问题的讨论,但是由于前面提到的PR,这个问题似乎已经结束了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67692826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档