节点中的Linux系统variables

我在应用程序的启动脚本中有NODE_ENV=${NODE_ENV:-production}

这是什么意思:-production

另外为什么添加系统variables和阅读它返回undefined ? 为了缓解这个问题,即使printenv显示它,我总是必须使用NODE_ENV=production npm start

这是shell语法; 它与Node无关。 这意味着如果shellvariablesNODE_ENV (可能来自环境)被设置为非空值,那么使用该值; 否则使用production

在没有看到启动脚本的情况下,很难说为什么它不起作用,但是请注意,在脚本中设置一个shellvariables并不会将该variables放到环境中。 在Bash中,一个命令行可以有一个前缀来设置这个命令调用的环境variables,这就是你在做什么

 NODE_ENV=production npm start 

如果您希望脚本确保将NODE_ENV导出到环境中,则应如下所示

 export NODE_ENV=${NODE_ENV:-production}