【问题标题】:Can't set NODE_ENV=production with npm and webpack无法使用 npm 和 webpack 设置 NODE_ENV=production
【发布时间】:2016-09-08 14:29:59
【问题描述】:

我正在尝试在我的应用程序中访问process.env.NODE_ENV,但我在检查时只得到process is not defined

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...我在这里做错了什么?

【问题讨论】:

  • 检查这是否有帮助 github.com/webpack/webpack/issues/2537?
  • 感谢您的提示,但我无法成功。实际上,即使我不尝试传递变量,我似乎也无法从“process.env”中得到任何东西。即使这个 'URL_DEV': JSON.stringify("specificIP")' 似乎也不起作用......

标签: javascript npm webpack


【解决方案1】:

我不完全确定问题是否来自我在package.json 中的scripts 键,但如果我使用它,似乎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 并且......它神奇地起作用。 如果你像我一样没有选择,你仍然可以试一试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-18
    • 2021-08-31
    • 2012-03-04
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多