2017-10-14 9 views
0

Je suis assez nouveau à React et j'ai construit une application de réaction côté client en utilisant webpack comme module bundler et npm. Cela fonctionne sans problème en développement avec Webpack devServer. En production, j'ai utilisé Express comme serveur. En cours d'exécution sur localhost: 8080, il s'affiche correctement mais je reçois ces avertissements. J'ai mis en place le NODE_ENV = 'production', mais toujours les mêmes avertissements.React App ignore NODE_ENV du mode de production

warning when using react app in production mode

Voici mon fichier de configuration de production

de production.config.js

const UglifyJsPlugin = require('uglifyjs-webpack-plugin') 
const webpack = require('webpack') 
const path = require('path') 
const HtmlWebpackPlugin = require('html-webpack-plugin'); 
const ExtractTextPlugin = require("extract-text-webpack-plugin"); 



const config ={ 
devtool: 'cheap-module-source-map', 


    entry: [ 
    'react-hot-loader/patch', 
    './client/main.js' 
    ], 

    output: { 
    path: path.resolve(__dirname, 'build'), 
    filename: 'app.bundle.js', 
    publicPath:'/' 

    }, 


    module: { 
    rules: [ 
     { 
     test: /\.css$/, 
     use: ExtractTextPlugin.extract({ 
      fallback: 'style-loader', 
      use: [ 
      { 
       loader: 'css-loader', 
       //query: { sourceMap: false }, 
       options: { 
       importLoaders: 1, 
       } 
      }, 
      { 
       loader: 'postcss-loader' 
      } 
      ] 

     }) 
     }, 
     { 
     test: /\.jsx?$/, 
     use: 'babel-loader', 
     exclude: /node_modules/ 
     }, 

     { 
     test: /\.(png|jpe?g|gif|svg|ico|\.woff$|\.ttf$|\.wav$|\.mp3$)$/i, 
     use: ['file-loader?name=img/[name].[ext]', 
      'image-webpack-loader'] 

     }, 
     { 
     test: /\.(eot|svg|ttf|woff|woff2)$/, 
     loader: 'file-loader?name=fonts/[name].[ext]' 

     } 
    ] 
    }, 

    plugins: [ 
    //index.html custom template 
    new HtmlWebpackPlugin({ 
     title: 'Index', 
     template: './index.html' 

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

    //extract css files 
    new ExtractTextPlugin({filename:"styles.css",disable:false,allChunks:true}), 
    new UglifyJsPlugin({ 
     sourceMap: false, 
     mangle: true, 
     beautify:false, 
     compress: { 
     warnings: false, // Suppress uglification warnings 
     pure_getters: true, 
     unsafe: true, 
     unsafe_comps: true, 
     screw_ie8: true 
     }, 
     output: { 
     comments: false 
     } 
    }) 


    ] 
}; 

module.exports=config 

de package.json

{ 
    "name": "react-app", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "webpack": "webpack", 
    "dev": "webpack-dev-server --colors", 
    "prod": "npm run build && node deploy.js", 
    "build": "webpack --config production.config.js --progress --colors" 
     } 

// dépendances ont été omis }

+0

Essayez '" build ":" exporter NODE_ENV = production && NODE_ENV = production && webpack --config production.config.js --progress --colors "'. Vous pourriez aussi avoir besoin de NODE_ENV à 'production' dans le shell, ce que feront ces commandes supplémentaires. – Jaxx

+0

Juste essayé votre solution, mais il jette l'exportation comme une commande non reconnue. mon OS est windows. – Ndx

+0

https://stackoverflow.com/questions/40212411/what-is-windows-equivalent-command-to-export-user-supplied-password-pswd. Apparemment, la commande Windows équivalente est définie. – Jaxx

Répondre

2

Essayez d'utiliser ce paquet: https://www.npmjs.com/package/cross-env

Je crois qu'il ya un problème avec la mise en NODE_ENV = production commande Windows invites qui il permet de résoudre.

Exemple d'utilisation:

script de construction:

cross-env NODE_ENV=production webpack 

webpack.config.js:

const webpack = require('webpack'); 

const env = process.env.NODE_ENV || 'production'; 

//... 

plugins = [ 
    new webpack.DefinePlugin({ 
    'process.env': { 
     NODE_ENV: JSON.stringify(env) 
    } 
    }) 
] 

//... 

espoir qui aide.

+0

Merci pour la réponse! Je l'ai résolu en plaçant 'process.env' à' process.env.NODE_ENV' et en mettant 'set NODE_ENV = 'production'' avec une citation et cela a fonctionné. Je vais upvote votre réponse depuis son plus proche de la correction que j'ai faite. – Ndx