Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'Cannot find module' error using karma-browserify on Windows

I'm attempting to set up unit testing on an Angular/Browserify project using Karma, Karma-Jasmine, and Karma-Browserify. I'm on a Windows machine, for reference. karma-cli is on my global npm path, and karma, karma-jasmine, karma-browserify, and browserify are all local npm installs, using -D.

I'm trying to pull in a single spec file, which looks like:

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

And I get the following error every time:

Uncaught Error: Cannot find module 'Cc/gGH'

I get this exact same error after cloning the following repos, installing karma and all plugins, and attempting to run their example test suites:

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

What on earth am I doing wrong? The test spec module is found correctly, and karma seems to be finding all necessary plugins/preprocessors, but it appears that karma-browserify is tripping on the require statement in a spec every time, for reasons I cannot fathom.

I've uninstalled and reinstalled karma and all related plugins numerous times now, to no avail.

like image 222
J. Ky Marsh Avatar asked Mar 25 '14 16:03

J. Ky Marsh


1 Answers

I managed to find a solution. The issue was caused by karma-browserify's own module name hashing function, which is incompatible with newer versions of browserify. There's a fork that deals with it by using browserify's hashing function:

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

There's a pull request pending but in the meantime you can use the fork by placing

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

in your package.json (dev)dependencies section.

like image 161
Alethes Avatar answered Oct 26 '22 08:10

Alethes