2015-06-04 12 views
5

मेरे पास जेएसएक्स में एक प्रोजेक्ट लिखा गया है और मैं main.js फ़ाइल बनाने के लिए वेबपैक का उपयोग करता हूं।ReactJs + webpack + यानी + console.log

यह मेरा webpack.config.js है:

var path = require('path'); 

module.exports = { 
    entry:{ main: [ 
      'consolelog', 
      'es5-shim', 
      'es5-shim/es5-sham', 
      'es6-shim', 
      'es6-shim/es6-sham', 
"./app/client" 
     ]}, 

    output: { 
    filename: '[name].js', 
    chunkFilename: '[id].chunk.js', 
    path: path.join('public', 'js'), 
    publicPath: '/js/' 
    }, 

    module: { 
    loaders: [ 
     { test: /\.js$/, loader: 'jsx-loader?harmony&insertPragma=React.DOM' }, 
     { test: require.resolve('react'), loader: 'expose?React' }, 

    ] 
    } 
}; 

मेरे समस्या यह है कि मैं IE (मैं इस समय IE9 के साथ परीक्षण) के तहत मेरी परियोजना का काम नहीं कर सकता। यह हमेशा कहता है "कंसोल अपरिभाषित है"।

फ़ायरफ़ॉक्स और क्रोम के साथ यह पूरी तरह से काम करता है।

मैं क्या गलत करता हूं?

मैंने कंसोल-पॉलीफिल के साथ भी कोशिश की लेकिन एक ही परिणाम।

IE9 कहना है कि यह जावास्क्रिप्ट कोड की इस पंक्ति में विफल रहता है:

_deprecationWarning2['default']('CollapsableNav', 'CollapsibleNav', 'https://github.com/react-bootstrap/react-bootstrap/issues/425#issuecomment-97110963'); 

लेकिन वहाँ इस पर कोई console.log है।

मैं क्या गलत करता हूं?

अग्रिम धन्यवाद!

+0

क्या आप कोड की आसपास की रेखाओं को भी साझा कर सकते हैं, कृपया? कभी-कभी समस्या केवल ऊपर या नीचे दी जा सकती है, जिस लाइन पर आपको निर्देशित किया जा रहा है। यदि आप अपने सभी कोड से पहले एक गलत कंसोल ऑब्जेक्ट बनाते हैं तो क्या होता है? 'window.console = window.console || {लॉग: फ़ंक्शन() {}, त्रुटि: फ़ंक्शन() {}, चेतावनी: फ़ंक्शन() {}}; '? – Sampson

+0

यह काम करता है और आगे बढ़ता है। मैं यहां चारों ओर लाइन कॉपी करूंगा लेकिन ऐसा लगता है कि यह प्रतिक्रिया-उपकरण है जो बहुत सारे console.log का उपयोग करता है अगली त्रुटि कहती है: ऑब्जेक्ट संपत्ति या विधि का समर्थन नहीं करता है '__defineGetter__' – user1870634

+0

ठीक है जाहिर है यह स्थानीय स्टोरेज पैकेज है जो इसका उपयोग करता है और यह बदल नहीं है। मैं इसे वेबपैक के साथ स्वचालित रूप से कैसे जोड़ सकता हूं? तो मुझे इसे हर बार मैन्युअल रूप से करने की ज़रूरत नहीं है। आपकी मदद के लिए धन्यवाद – user1870634

उत्तर

3

ऐसे ब्राउज़र में जो कंसोल का समर्थन नहीं करते हैं, आपको अपने कोड से कंसोल फ़ंक्शन को पट्टी करने की आवश्यकता है। वेबपैक के लिए आप webpack-strip का उपयोग कर सकते हैं। एक तरह से उपयोग करने के लिए इस प्रकार है:

var WebpackStrip = require('webpack-strip') 

फिर पट्टी console.log और console.error

{ 
    module: { 
     loaders: [ 
      { test: /\.js$/, loader: 'jsx-loader?harmony&insertPragma=React.DOM' }, 
      { test: require.resolve('react'), loader: 'expose?React' }, 
      { test: /\.js$/, loader: WebpackStrip.loader('console.log', 'console.error') } 
     ] 
    } 
}; 
+0

धन्यवाद। मैं इसे करने की कोशिश की। मैं webpack.config.js में var WebpackStrip = की आवश्यकता ('वेबपैक-स्ट्रिप') डालता हूं और लोडर लाइन जोड़ता हूं। लेकिन दुर्भाग्य से यह काम नहीं किया। अजीब बात यह है कि मैं अभी भी अपनी जेनरेट की गई फ़ाइल "main.js" में console.log और console.error देख सकता हूं। वो कैसे संभव है? आपकी मदद के लिए धन्यवाद – user1870634

+0

क्या आपने जांच की है कि वेबपैक-स्ट्रिप मॉड्यूल ठीक से लोड हो गया है? – Mark

+0

मैं इसे कैसे देख सकता हूं? – user1870634

0

आप एक ही पंक्ति में दोनों लोडर डाल करने के लिए है लोडर को { test: /\.js$/, loader: WebpackStrip.loader('console.log', 'console.error') } जोड़ें। loader का उपयोग करने के बजाय, loaders का उपयोग करें और दोनों लोडर के साथ एक सरणी पास करें।