Heroku:process.env.NODE_ENV 未注册为“生产”(它注册为“开发”)

Ste*_*eve 5 heroku environment-variables node.js

在我的 index.js 代码中,我检查了 process.env.NODE_ENV 变量的值,并期望它是“生产”,但在 Heroku 上,该变量注册的值是“开发”。

我读过 Heroku 默认情况下将此值设置为“生产”,但由于某种原因,它仍然注册为“开发”,即使我在 Config Vars 下显式设置该值,它仍然显示它正在开发。以下是我的 index.js 文件中的条件:

if (process.env.NODE_ENV === 'production') {
  // serve production assets...
} else {
  // serve development assets...
}
Run Code Online (Sandbox Code Playgroud)

如果我将线路更改为...

if (process.env.NODE_ENV === 'development') {
Run Code Online (Sandbox Code Playgroud)

生产资源在 Heroku 上得到了很好的服务。

关于如何让 process.env.NODE_ENV 在 Heroku 上注册为“生产”,有什么想法吗?

编辑:

在我的 webpack.js 文件中我正在这样做......

const env = process.env.NODE_ENV;
const config = {
  mode: env || 'development'
};

module.exports = {
  // some code...

  ...config, // 'development' or 'production' mode

  // more code...
}
Run Code Online (Sandbox Code Playgroud)

我确实尝试将此值硬编码为“生产”,如下所示......

mode: env || 'production'
Run Code Online (Sandbox Code Playgroud)

但这没有效果。

Ste*_*eve 1

问题出在我的 webpack.js 文件上,特别是这段代码:

const env = process.env.NODE_ENV;
const config = {
    mode: env || 'development'
};
Run Code Online (Sandbox Code Playgroud)

由于某种原因process.env.NODE_ENV被设置为“开发”。我已删除该config变量并将其替换为以下硬编码值:

mode: 'development'
Run Code Online (Sandbox Code Playgroud)

现在它起作用了。唯一的问题是我必须在部署到生产之前手动更改该值。