无法使用npm和webpack设置NODE_ENV = production

时间:2016-09-08 14:30:00

标签: javascript npm webpack

我试图在我的应用内访问process.env.NODE_ENV,但我只是在检查时没有定义过程。

package.json:

"scripts": {
    "dev": "node ./node_modules/webpack/bin/webpack.js",
    "prod": "NODE_ENV=production node ./node_modules/webpack/bin/webpack.js -p"
},

webpack.config.js:

const NODE_ENV = process.env.NODE_ENV ? process.env.NODE_ENV.toLowerCase() : 'development';

及以下:

plugins: [
  new webpack.DefinePlugin({
    'process.env': {
      'NODE_ENV': JSON.stringify(NODE_ENV),
      'URL_DEV': JSON.stringify("specificIP"),
      'URL_PROD': JSON.stringify("OtherIP")
    }
  })
]

在应用来源:

switch(process.env.NODE_ENV) {
  case 'development':
    url = process.env.URL_DEV;
    break;
  case 'production':
    url = process.env.URL_PROD;
    break;
  default:
    url = process.env.URL_DEV;
}

似乎process没有定义......我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

我不完全确定问题是来自scripts内的package.json密钥,但如果我使用此代码,NODE_ENV似乎已正确设置:

"scripts": {
  "dev": "cross-env NODE_ENV=development node ./node_modules/webpack/bin/webpack.js --progress --colors --bail",
  "prod": "cross-env NODE_ENV=production webpack -p --progress --colors --bail"
}

所以我实际上使用了cross-env并且......它神奇地起作用了。 如果你没有像我这样的选择,你仍然可以试一试。