即使在导出后 process.env 变量也未定义

Nie*_*ert 5 macos node.js express

我正在编写一个 Node.js express 应用程序,并希望使用环境变量来设置服务器应该运行的端口。

但是,我似乎process.env.PORT无法读取我的PORT环境变量。

我已经使用export如下方式定义了 PORT 环境变量: export PORT=1234我还将此行添加到~/.bash_profile文件中,但process.env.PORT仍未定义。

当我echo $PORT在终端中运行时,它会1234正确显示值 ( )。

我正在运行 Node V0.12.7 和 OSX El Capitan 10.11.1 并且真的找不到任何可能导致这种情况的额外线索。

谢谢!

编辑: 这是在尝试分配process.env.portport变量之前执行的代码

var app = require('../app');
var proxy = require("../proxy");
var http = require('http');
var nconf = require('nconf');
nconf.file(__dirname + "/appConf.json");
var appSettings = require('../appSettings');

var port = normalizePort(process.env.PORT || 8080);
Run Code Online (Sandbox Code Playgroud)

小智 4

有一个很棒的 npm 包,名为,它会从与您的 NodeJS 应用程序位于同一目录中的dotenv文件中自动加载任何环境变量。.env这可以为您提供一个不同的PORT变量项目来进行投影,而不是PORT在所有终端上全局定义一个变量项目。

就其他一切而言,听起来PORT应该在那里(您甚至说它是echo从命令行正确使用的)。您是否用完node了与您使用的相同的终端echo?我能想到的唯一其他问题是,如果您在修改后没有重新启动正在运行服务器的终端~/.bash_profile,或者可能是某个地方的简单拼写错误。

我本来想将此作为评论发布,但我没有分数。