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

3

我正在尝试在我的应用程序中访问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。我做错了什么?


请检查此链接是否有所帮助 https://github.com/webpack/webpack/issues/2537? - Deendayal Garg
谢谢你的提示,但我无法使其工作。实际上,似乎我甚至不能从 'process.env' 中获取任何内容,即使我不尝试传递变量。即使这个 'URL_DEV': JSON.stringify("specificIP")' 也似乎不起作用... - Clafouti
1个回答

4

我不确定问题是否来自于我的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,然后...它神奇地工作了。如果像我一样没有其他选择,你仍然可以试试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接