在运行时在Sails.js的server.js配置中访问NODE_ENV

cod*_*shr 4 node.js sails.js

当我尝试在config/server.jsSails.js文件中进行配置更改时,我发现自己无法访问NODE_ENV变量.我想配置属性的serverOptions标志express并绑定ssl证书 - 但仅限于生产.

假设我启动了服务器 node app.js --prod

这不起作用:

module.exports = { ... };
console.log(process.env.NODE_ENV); // undefined
Run Code Online (Sandbox Code Playgroud)

但这确实有效:

module.exports = { ... };
setTimeout(function () {
  console.log(process.env.NODE_ENV); // production
}, 1000);
Run Code Online (Sandbox Code Playgroud)

基本上我想做的就是:

module.exports = (function () {
  var env = process.env.NODE_ENV,
    ret = { express: {} };

  if (env == 'production') {
    ret.express.serverOptions = { key: ..., cert: ... };
  }

  return ret;
}());
Run Code Online (Sandbox Code Playgroud)

我已经看到类似的答案,如/sf/answers/1480694631/但我无法理解他们应该如何工作,当我没有.

Cha*_*ott 7

改为运行你的应用程序:

NODE_ENV=production node app.js
Run Code Online (Sandbox Code Playgroud)

要么

sails lift --prod
Run Code Online (Sandbox Code Playgroud)

在应用程序根目录中.您尝试使用的命令行开关是为了传递给sails可执行文件,而不是直接传递给您的应用程序javascript.