出于某种原因,我没有遇到需要jquery
的问题,但我与moment
合作。我收到的错误是:
Uncaught Error: Cannot find module "moment" from "/" app.js:62:11
require app.js:62:11
当我在包含vendor.js
的代码部分调试moment
时,我看到了:
// CommonJS module is defined
if (hasModule) {
module.exports = moment;
makeGlobal(true);
} else if (typeof define === "function" && define.amd) {
define("moment", function (require, exports, module) {
if (module.config && module.config() && module.config().noGlobal !== true) {
// If user provided noGlobal, he is aware of global
makeGlobal(module.config().noGlobal === undefined);
}
return moment;
});
} else {
makeGlobal();
}
hasModule
返回false:
// check for nodeJS
hasModule = (typeof module !== 'undefined' && module.exports && typeof require !== 'undefined'),
因此它运行makeGlobal()
方法。我无法理解为什么hasModule
是假的。也许这个检测代码在brunch
定义代码之前执行?显然我已将moment
正确配置为依赖项,因为它确实包含在我的vendor.js文件中,那么为什么moment = require 'moment'
会失败并显示Uncaught Error: Cannot find module "moment" from "/"
?
答案 0 :(得分:1)
Brunch不会在模块定义中包装供应商库。您可以将moment.js
移至app/
目录,或者只使用moment
全局变量。
扩展保罗的评论: 我做的是1)剩下的时刻被编译到vendor.js 2)删除spec中的require
然后以下工作在规范中没有任何其他要求:
mom = moment()
expect(moment).not.toBeNull()