2016-05-19 12 views
5

चेतावनी:प्रतिक्रिया ब्राउज़र कंसोल में उत्पादन मोड में स्विच नहीं है

bundle.js: 1 चेतावनी: ऐसा लगता है कि आप प्रतिक्रिया की विकास निर्माण के एक minified प्रति का उपयोग कर रहे हैं। उत्पादन के लिए प्रतिक्रिया ऐप्स को तैनात करते समय, उत्पादन निर्माण का उपयोग करना सुनिश्चित करें जो विकास चेतावनियों को छोड़ देता है और तेज़ है। अधिक जानकारी के लिए http://facebook.github.io/react/downloads.html देखें। package.json से


स्क्रिप्ट:

"scripts": { 
    "start": "if-env NODE_ENV=production && npm run start:prod || npm run start:dev", 
    "start:dev": "webpack-dev-server --inline --content-base public/ --history-api-fallback", 
    "start:prod": "webpack && node server.js" 
    }, 

Git में कमान बैश:

NODE_ENV=production npm start 

अगर मैं server.js में console.log(process.env.NODE_ENV) का उपयोग , मुझे production मिलता है।

  • प्रतिक्रिया NPM के माध्यम से स्थापित किया गया है
  • नवीनतम संस्करण: 15.0.2
  • मैं Webpack UglifyJs प्लगइन

किसी भी विचार क्या गलत हो सकता है का उपयोग करें?


पहले ब्लॉककोट में लिंक से:

नोट: डिफ़ॉल्ट रूप से, प्रतिक्रिया विकास मोड में हो जाएगा। उत्पादन मोड में प्रतिक्रिया का उपयोग करने के लिए, पर्यावरण परिवर्तनीय NODE_ENV को उत्पादन (envify या webpack's DefinePlugin का उपयोग करके) पर सेट करें। एक मिनीफायर जो करता है, मृत-कोड उन्मूलन जैसे UglifyJS को विकास मोड में मौजूद अतिरिक्त कोड को हटाने की अनुशंसा की जाती है।

क्या मुझे कुछ याद आ रही है? क्या मुझे चर सेट करने के लिए वास्तव में किसी तीसरे पक्ष के पैकेज या प्लगइन की आवश्यकता है? लेकिन यह पहले से ही कंसोल लॉग है कि यह उत्पादन वातावरण में है .. मेरे लिए तार्किक प्रतीत नहीं होता है।


अद्यतन: वर्तमान webpack.config.js

var webpack = require('webpack') 

module.exports = { 
    entry: './index.js', 

    output: { 
    path: 'public', 
    filename: 'bundle.js', 
    publicPath: '/' 
    }, 

    plugins: process.env.NODE_ENV === 'production' ? [ 
    new webpack.optimize.DedupePlugin(), 
    new webpack.optimize.OccurrenceOrderPlugin(), 
    new webpack.optimize.UglifyJsPlugin() 
    ] : [], 

    module: { 
    loaders: [ 
     { 
      test: /\.js$/, 
      exclude: /node_modules/, 
      loader: 'babel-loader?presets[]=es2015&presets[]=react' 
     } 
    ] 
    } 
} 
+1

वेबपैक कॉन्फ़िगरेशन में 'webpack.DefinePlugin' जांचें और' process.env' मैन्युअल रूप से पास करें। – zerkms

+0

मैंने अपने वर्तमान वेबपैक कॉन्फ़िगरेशन फ़ाइल के साथ अपना प्रश्न अपडेट किया। @zerkms – Solo

+0

"पर्यावरण जांच पूरी तरह से काम करती है" --- आप ब्राउज़र प्रक्रिया में प्रतिक्रिया करते समय सर्वर प्रक्रिया के लिए पर्यावरण की जांच करते हैं। – zerkms

उत्तर

10

है कि कैसे मैं आमतौर पर ऐसा कर:

new webpack.DefinePlugin({ 
    'process.env': { 
     NODE_ENV: JSON.stringify(process.env.NODE_ENV), 
    }, 
}), 

और webpack प्लगइन्स की सरणी है कि गुजरती हैं।

समस्या क्यों होती है: जब वीपैक संसाधित करता है - कोड संसाधित किया जा रहा है वास्तव में नहीं चलाया जाता है लेकिन बस पढ़ा जाता है। तो जब आप इसे चलाते हैं - तो पर्यावरण चरों तक पहुंचने में बहुत देर हो चुकी है।

आप सर्वर पर चल रहे प्रक्रिया के लिए पर्यावरण की जांच कर रहे हैं, जबकि ब्राउज़र में प्रतिक्रियाएं चलती हैं तो जाहिर है कि सर्वर सर्वर पर्यावरण चर के लिए इसका उपयोग नहीं है। इसलिए आपको इसे निर्माण समय के दौरान स्पष्ट रूप से इंजेक्ट करने की आवश्यकता है।

+0

महान स्पष्टीकरण, धन्यवाद – ptim

+0

मेरे लिए काम नहीं कर रहा है ... त्रुटि अभी भी दिखाई दे रही है:/ – camou

+0

@camou एक अलग प्रश्न पूछें और सभी विवरण प्रदान करें। – zerkms

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