2016-02-23 12 views
9

मैं इस तरह webpack कॉन्फ़िगर कर दिया है रिटर्न:क्यों की आवश्यकता होती है ("कोणीय") एक खाली वस्तु

resolve: { 
    alias: { 
     angular: path.join(__dirname, './node_modules/angular/angular.js') 
    } 
}, 

और मेरी फाइल में मैं इस तरह कोणीय आवश्यकता होती है:

var angular = require("angular"); 

लेकिन किसी कारण से एक खाली वस्तु वापस आती है, क्यों?

+1

कोणीय 1 CommonJS मॉड्यूल का समर्थन नहीं करता, तो यह 'निर्यात' एक खाली वस्तु। इसके बजाय, केवल इसकी आवश्यकता है (परिणाम निर्दिष्ट किए बिना): की आवश्यकता है ('कोणीय') – Rahul

+0

हाँ, अब यह काम कर रहा है, धन्यवाद, क्या आप इसे उत्तर के रूप में पोस्ट कर सकते हैं? –

+0

कृपया जाँच मेरा उत्तर – Rahul

उत्तर

4

अन्य उत्तर एक काम कर समाधान प्रदान नहीं कर रहे हैं!। यह सच है कि कोणीय 1 वेबपैक आउट-द-बॉक्स के साथ अच्छी तरह से काम नहीं कर रहा है (https://github.com/webpack/webpack/issues/2049 देखें), लेकिन इसे एक शिम से भरा जा सकता है। इस webpack लोडर config का प्रयास करें:

module: { 
    loaders: [ 
     /* 
     * Necessary to be able to use angular 1 with webpack as explained in https://github.com/webpack/webpack/issues/2049 
     */ 
     { 
      test: require.resolve('angular'), 
      loader: 'exports?window.angular' 
     }, 
    ] 
}, 
plugins: [ 
    new webpack.ProvidePlugin({ 
     'angular': 'angular', 
    }), 
], 

यह कोणीय वस्तु ठीक से करने के बजाय एक खाली वस्तु के लिए यह स्थापित करने की डिफ़ॉल्ट क्रिया (जो एक संपत्ति नामित मॉड्यूल नहीं है) को प्रारंभ करना चाहिए।

1

कोणीय 1 CommonJS मॉड्यूल का समर्थन नहीं करता है, यह बहुत 'निर्यात' एक खाली वस्तु।

इसके बजाय, बस इसे की आवश्यकता होती है (परिणाम बताए):

require('angular') 
1

वैचारिक जवाब -

कोणीय 1.xCommonJS मॉड्यूल यही कारण है कि के दृष्टिकोण अनुसरण कर रहा है का समर्थन नहीं करता

var angular = require("angular"); 
: निर्यात एक empty object पैदावार

तो बेहतर var angular हिस्सा छोड़ देते हैं और सिर्फ बनाने require("angular");

3

के उपयोग अन्य उत्तर बहुत सटीक नहीं हैं - यह सच है कि कोर angular.js फ़ाइल CommonJS का समर्थन नहीं करता है, लेकिन आप NPM से इसे स्थापित है, एक index.js नामक छोटी रैपर फ़ाइल प्रदान की जाती है।

require('./angular'); // Runs angular.js, which attaches to the window object 
module.exports = angular; // Exports the global variable 

यह आपको सामान्य की तरह CommonJS वातावरण में इसका इस्तेमाल करने की अनुमति देता है: यह सचमुच सिर्फ दो लाइनों है। तो अगर आप इतने की तरह अपने config अद्यतन करते हैं, यह काम करना चाहिए:

resolve: { 
    alias: { 
     angular: path.join(__dirname, './node_modules/angular/index.js') 
    } 
}, 

(जैसा कि कहा गया है, इस Webpack का डिफ़ॉल्ट व्यवहार किया जाना चाहिए, भले ही आप उर्फ ​​नहीं angular, के रूप में index.js अपने package.json में कोणीय के मुख्य फ़ाइल के रूप में चिह्नित किया गया है - आप शायद सिर्फ सब पर कोई अन्य नाम का उपयोग के साथ भाग प्राप्त कर सकते हैं)

+0

महान है, धन्यवाद आपके सुझाव के लिए, मैं निश्चित रूप से यह कोशिश करता हूँ –

+0

यह मैं एक बहुत मदद करता है! धन्यवाद! –

+0

किसी भी कारण से, वह रैपर चाल नहीं करता है। आवश्यकता के बाद "कोणीय" चर ('कोणीय') एक खाली वस्तु है, लेकिन window.angular में उचित कोणीय वस्तु होती है। इस प्रकार यह लोडर कॉन्फ़िगरेशन आवश्यक है: {test: require.resolve ('कोणीय'), लोडर: 'निर्यात? विंडो।कोणीय '}, – Motin

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