对于正在使用RequireJS / AMD加载模块的项目,我正在尝试将大量第三方资源从自托管代码迁移到其NPM包中。
虽然我能够迁移其中的一些,但有许多NPM软件包会在我的项目中引起相同/相似的错误。
错误:匿名define()模块不匹配
我还找到了许多其他帖子以及有关此特定错误消息的RequireJS文档,但是对于如何使它在我们的项目中工作而不编辑第三方源代码感到困惑。
我可以看到很多软件包都包含以下代码:
// AMD support
(function (factory) {
"use strict";
if (typeof define === 'function' && define.amd) {
// using AMD; register as anon module
define(['jquery'], factory);
} else {
// no AMD; invoke directly
factory( (typeof(jQuery) != 'undefined') ? jQuery : window.Zepto );
}
}
这应该使程序包加载时不会出错吗?还是因为define(['jquery'], factory)
语句未明确包含ID参数而发生错误?
是否无法在RequireJS / AMD中直接包含NPM软件包?每个人都必须使用r.js
进行转换,然后使用转换而不是直接引用node_modules吗?
如果我想直接使用NPM软件包,是否可以摆脱RequireJS / AMD之类的东西?