2014-10-04 13 views
5

मैं एक नोड मॉड्यूल जो दोनों बैकएंड और ग्राहककर्मा: नहीं खोजा जा सका चर: निर्यात

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

अब मेरी कर्म परीक्षण PhantomJs का उपयोग करें और मौजूदा नहीं exports चर के बारे में शिकायत के लिए इस्तेमाल किया जा सकता लिखा है

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

त्रुटि मैं

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

निर्यात vari की अनदेखी करने के लिए एक रास्ता है वहाँ है करम/phantoms जेएस में सक्षम? - ठीक है, यह तकनीकी रूप से बिट स्रोत कोड में और अधिक जटिल है, क्योंकि यह समर्थन भी करता है एएमडी

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

यह पैटर्न उदाहरण के रूप में प्रयोग किया जाता है:

उत्तर

6

एक आम पैटर्न की जांच करने के exports चर परिभाषित किया गया है कि क्या आम तौर पर है , लेकिन विचार यह है।

तुम भी जांच रैपिंग समारोह के पहले तर्क के रूप में इसे पारित नीचे धक्का कर सकते हैं:

(function(exports){ 

    // your code goes here 

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

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

अधिक जानकारी के लिए एक नज़र at this blog post है।

+2

लेकिन वास्तव में ओपी के कोड के साथ समस्या क्या है? –

+1

इस SO उत्तर को देखें: http://stackoverflow.com/questions/4725603/variable-undefined-vs-typeof-variable-undefined – MarcoL

संबंधित मुद्दे