RequireJS模块尝试加载垫片';ed模块

RequireJS模块尝试加载垫片';ed模块,requirejs,shim,Requirejs,Shim,我在尝试为我组织中的另一个团队编写的一些javascript代码创建RequireJS垫片时遇到问题。该脚本通过noraml HTML脚本加载,如下所示: <script src="MyCustomModule.js" type="text/javascript"></script> 我尝试过以各种方式访问自定义模块,但这是我当前的代码: define(['MyCustomModule'], function (require, MyCustomModule) { .

我在尝试为我组织中的另一个团队编写的一些javascript代码创建RequireJS垫片时遇到问题。该脚本通过noraml HTML脚本加载,如下所示:

<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'
        }
    }
});