Node.js 开发环境与生产环境的区别

可以为生产环境和开发环境使用不同的配置。

Node.js 假定其始终运行在开发环境中。 可以通过设置 NODE_ENV=production 环境变量来向 Node.js 发出正在生产环境中运行的信号。

通常通过在 shell 中执行以下命令来完成:

export NODE_ENV=production

但最好将其放在的 shell 配置文件中(例如,使用 Bash shell 的 .bash_profile),否则当系统重启时,该设置不会被保留。

也可以通过将环境变量放在应用程序的初始化命令之前来应用它:

NODE_ENV=production node app.js

此环境变量是一个约定,在外部库中也广泛使用。

设置环境为 production 通常可以确保:

  • 日志记录保持在最低水平。
  • 更高的缓存级别以优化性能。

例如,如果 NODE_ENV 未被设置为 production,则 Express 使用的模板库 Pug 会在调试模式下进行编译。 Express 页面会在开发模式下按每个请求进行编译,而在生产环境中则会将其缓存。 还有更多的示例。

可以使用条件语句在不同的环境中执行代码:

if (process.env.NODE_ENV === "development") {
  //...
}
if (process.env.NODE_ENV === "production") {
  //...
}
if(['production', 'staging'].indexOf(process.env.NODE_ENV) >= 0) {
  //...
})

例如,在 Express 应用中,可以使用此工具为每个环境设置不同的错误处理程序:

if (process.env.NODE_ENV === "development") {
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }))
})

if (process.env.NODE_ENV === "production") {
  app.use(express.errorHandler())
})