2014-10-04 9 views
5

ich ein Knotenmodul geschrieben haben, die sowohl für das Backend verwendet werden kann und ClientKarma: Kann nicht variabel finden: Exporte

(exports || window).Bar= (function() { 
    return function() { .... } 
})(); 

Jetzt PhantomJS mein Karma Tests verwenden und beschweren sich über die nicht vorhandene exports Variable

gulp.task('test', function() { 
    var karma = require('karma').server; 

    karma.start({ 
     autoWatch: false, 
     browsers: [ 
      'PhantomJS' 
     ], 
     coverageReporter: { 
      type: 'lcovonly' 
     }, 
     frameworks: [ 
      'jasmine' 
     ], 
     files: [ 
      'bar.js', 
      'tests/bar.spec.js' 
     ], 
     junitReporter: { 
      outputFile: 'target/junit.xml' 
     }, 
     preprocessors: { 
      'app/js/!(lib)/**/*.js': 'coverage' 
     }, 
     reporters: [ 
      'progress', 
      'junit', 
      'coverage' 
     ], 
     singleRun: true 
    }); 
}); 

Der Fehler, den ich bekommen ist

PhantomJS 1.9.7 (Mac OS X) ERROR 
    ReferenceError: Can't find variable: exports 

gibt es eine Möglichkeit, die Exporte Vari zu ignorieren Können in Karam/PhantomeJs?

Antwort

6

Ein übliches Muster ist in der Regel zu prüfen, ob die exports Variable definiert sind:

(function(){ 
    ... 
    var Bar; 
    if (typeof exports !== 'undefined') { 
    Bar = exports; 
    } else { 
    Bar = window.Bar = {}; 
    } 
})(); 

Dieses Muster als Beispiel verwendet wird - na ja, es im Quellcode technisch etwas komplizierter ist, weil es Unterstützung bietet auch AMD , aber die Idee ist es.

Sie können auch die Überprüfung nach unten drücken es als erstes Argument der Verpackungsfunktion übergeben:

(function(exports){ 

    // your code goes here 

    exports.Bar = function(){ 
     ... 
    }; 

})(typeof exports === 'undefined'? this['mymodule']={}: exports); 

Werfen Sie einen Blick at this blog post für weitere Informationen.

+2

Aber was ist eigentlich das Problem mit OP-Code? –

+1

Sieh dir diese SO Antwort an: http://stackoverflow.com/questions/4725603/variable-undefined-vs-type-of-variable-undefined – MarcoL