RequireJS模块尝试加载垫片';ed模块
我在尝试为我组织中的另一个团队编写的一些javascript代码创建RequireJS垫片时遇到问题。该脚本通过noraml HTML脚本加载,如下所示:RequireJS模块尝试加载垫片';ed模块,requirejs,shim,Requirejs,Shim,我在尝试为我组织中的另一个团队编写的一些javascript代码创建RequireJS垫片时遇到问题。该脚本通过noraml HTML脚本加载,如下所示: <script src="MyCustomModule.js" type="text/javascript"></script> 我尝试过以各种方式访问自定义模块,但这是我当前的代码: define(['MyCustomModule'], function (require, MyCustomModule) { .
<script src="MyCustomModule.js" type="text/javascript"></script>
我尝试过以各种方式访问自定义模块,但这是我当前的代码:
define(['MyCustomModule'], function (require, MyCustomModule) {
...
}
但每次加载页面/应用程序时,我都会从RequireJS收到一个错误,表明它未能加载
app/MyCustomModule.js
(我可以在控制台中看到404错误,它试图从服务器请求文件)。我做错了什么?您还需要在路径中包含MyCustomModule
:
requirejs.config({
paths: {
'text': 'durandal/amd/text'
'MyCustomModule': 'path/to/MyCustomModule'
},
shim: {
'MyCustomModule': {
exports: 'My.Custom.Module'
}
}
});
如果不这样做,define(['MyCustomModule'](…)
将在baseUrl
位置查找依赖项,在您的情况下:app/MyCustomModule
换句话说:shim
无法“拾取”RequireJS未加载的全局变量。是否在某个地方记录了这些变量,位于:的文档没有提到任何关于设置路径的内容(但我明天回去工作时一定会尝试)。您链接的几乎整个章节都暗示shim仅适用于由RequireJS加载的依赖项(“假设[libraries]已安装在baseUrl目录中。如果未安装,则可能需要为它们设置路径配置:”,“要加载属于或使用shim配置的模块,需要正常的require/define调用”,等等),但你是对的,它似乎没有明确提到。这里有一个替代方案(无垫片)解决詹姆斯·伯克自己提出的相同问题:这基本上是我们已经做的,我希望通过实现垫片来清理其中大约15个文件。似乎垫片是一种“清洁剂”这样做的方式。也许不是…这确实解决了它,但引起了其他问题。看起来我们应该坚持詹姆斯·伯克建议的解决方案。谢谢你提供的信息。
requirejs.config({
paths: {
'text': 'durandal/amd/text'
'MyCustomModule': 'path/to/MyCustomModule'
},
shim: {
'MyCustomModule': {
exports: 'My.Custom.Module'
}
}
});