ReferenceError non interceptée: require n'est pas défini

Pour un projet que je suis en train de travailler sur j'ai été en utilisant un méli-mélo de bibliothèques JavaScript. La logique principale de mon code est divisé en plusieurs commonjs modules. J'utilise google fermeture de combiner les modules dans un seul fichier js que j'utilise dans mon application AngularJS.

Le problème que j'ai est d'essayer de faire des tests avec testacular. Il y a d'erreur que je reçois est Uncaught ReferenceError: require is not defined. Il est en passe parce que, contrairement à google de fermeture, testacular ne comprends pas commonjs modules. Il y a quelques solutions que je peux faire, mais je m'attendais à le faire fonctionner sans avoir à restructurer mon code.

  1. Je peux restucture les modules de sorte que je ne suis plus à l'aide de commonjs. Je n'aime pas cela, car il se sent comme un pas en arrière. Je veux mon code pour être modulaire.
  2. Je peux courir testacular sur la compilation des js de google fermeture. Je n'ai pas l'esprit de le faire de cette façon, mais je n'ai pas été en mesure de déclencher à tout pour travailler sur des modifications de fichiers. Testacular pouvez ré-exécuter lui-même sur les modifications du fichier, mais je n'ai pas vu de toute façon de faire de google closure compiler sur les changements.
  3. Enfin, je peux activer commonjs module dans testacular. Idéalement, ce est la façon dont je veux aller, mais il peut ne pas être le plus facile.

Quelqu'un d'autre a un problème similaire? Je suis ouvert pour essayer des choses différentes, je ne veux pas quelque chose de hacky.

javaclassstreamreader.spec.js:

"use strict"

var JavaClassStreamReader = require('../javaclassstreamreader.js').JavaClassStreamReader;

describe('javaclassstreamreader', function() {

  it('reader can be constructed', function() {
    var dataView = {
      byteLength : 0
    };
    //FIXME load dataView

    var reader = new JavaClassStreamReader(dataView);
    expect(reader.dataView).toBe(dataView);
    expect(reader.offset).toBe(0);
    expect(reader.maxOffset).toBe(0);
  });

});

javaclassstreamreader.js:

function JavaClassStreamReader(dataView, initialOffset, maxBytesToRead) {
  this.dataView = dataView;
  this.offset = initialOffset || 0;
  this.maxOffset = this.offset + (maxBytesToRead || this.dataView.byteLength);
}
//... code trucated ...

source d'informationauteur pgreen2