我正在努力将使用以下 AMD 兼容性设置的插件添加到我的应用程序中:
来自foo.js的片段有问题:
(function (dependencies, module) {
"use strict";
if (typeof define === 'function' && define.amd) {
return define(dependencies, module);
}
if (typeof exports === 'object') {
return module(exports);
}
window.foo = {};
module(window.foo, {hex_sha256: hex_sha256});
}(['exports', 'sha256'], function (exports, sha256) {
// foo
}));
我将foo设置为另一个名为bar的模块中的依赖项,如下所示:
define(["jquery", "foo", "sha256", "c", "d"], function() {
// stuff
});
在 r.js 优化器中,我定义bar
为:
{
name: "bar"
, include: ["foo", "sha256", "c", "d"]
, exclude: ["jquery"]
},
这会生成bar.js
包含上述文件的文件。
但是,当我加载我构建的应用程序时,仍然有两个请求被触发到foo.js
and sha256.js
,它们404
(优化器清理构建的文件)和我的bar.js
构建层内的人。
问题:
我对模块 amd check 有点不知所措,我怀疑它对不需要的呼叫负责。任何人都可以阐明我应该在 AMD 检查中修改什么foo
以在构建层中生成可调用表单吗?
谢谢!
编辑:
我试过shimming
这样:
shim: {
'foo': { deps: ['sha256'] }
},
它负责处理 404,但返回:
Mismatched anonymous define() module: function (exports, sha256) {....
错误,所以我仍然坚持假设sha256
我的 AMD 检查中的硬编码依赖是罪魁祸首。也许这有帮助。
编辑:
我很确定我的问题源于 AMD 兼容性检查中的依赖声明。