基于早午餐的构建/业力测试与`require' moment'`导致无法找到模块"时刻"

时间:2014-04-05 03:57:53

标签: momentjs brunch

出于某种原因,我没有遇到需要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 "/"

1 个答案:

答案 0 :(得分:1)

Brunch不会在模块定义中包装供应商库。您可以将moment.js移至app/目录,或者只使用moment全局变量。

扩展保罗的评论: 我做的是1)剩下的时刻被编译到vendor.js 2)删除spec中的require

然后以下工作在规范中没有任何其他要求:

  mom = moment()
  expect(moment).not.toBeNull()