'找不到模块'在Windows上使用karma-browserify时出错

时间:2014-03-25 16:45:58

标签: node.js angularjs jasmine karma-runner browserify

我正在尝试使用Karma,Karma-Jasmine和Karma-Browserify在Angular / Browserify项目上设置单元测试。我在Windows机器上,供参考。 karma-cli位于我的全局npm路径上,karmakarma-jasminekarma-browserifybrowserify都是本地npm安装,使用-D

我正在尝试提取单个spec文件,如下所示:

var PhoneListCtrl = require('../../../public/js/app/controllers/phone-list');

describe('PhoneListCtrl', function() {
    var scope,
    ctrl;

    beforeEach(function() {
        scope = {};
        ctrl = new PhoneListCtrl(scope);
    });

    it('should create "phones" model with 3 phones', function() {
        expect(scope).not.toBe(undefined);
    });
});

我每次都会收到以下错误:

Uncaught Error: Cannot find module 'Cc/gGH'

在克隆以下repos,安装karma和所有插件并尝试运行他们的示例测试套件后,我得到了完全相同的错误:

https://github.com/xdissent/karma-browserify
https://github.com/waye929/angular-browserify

我到底在做什么?正确找到了测试规范模块,并且业力似乎正在寻找所有必要的插件/预处理器,但似乎karma-browserify每次都会在规范中的require语句中跳闸,原因我无法理解。< / p>

我已经多次卸载并重新安装业力和所有相关插件,但无济于事。

1 个答案:

答案 0 :(得分:5)

我设法找到了解决方案。该问题是由karma-browserify自己的模块名称散列函数引起的,该函数与较新版本的browserify不兼容。有一个fork使用browserify的散列函数处理它:

https://github.com/voidlock/karma-browserify/commit/3afe3b7485f2e4723bba5ad1c5a730d560b8c234

有一个挂起请求未决,但与此同时您可以通过放置

来使用fork

"karma-browserify": "https://github.com/voidlock/karma-browserify/tarball/use-browserify-hash-function"

package.json(dev)依赖关系部分。