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

时间:2015-11-16 14:24:22

标签: node.js macos 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.port分配给port变量

之前执行的代码
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);

1 个答案:

答案 0 :(得分:4)

有一个名为dotenv的优秀npm包,它将从与nodeJS应用程序相同的目录中的名为.env的文件中自动加载任何环境变量。这可以为您提供一个不同的PORT变量项目,而不是在所有终端上全局定义一个PORT

就其他事情而言,听起来PORT应该在那里(你甚至说它是echo - 来自命令行。您是否使用node的同一终端运行echo了?我能想到的唯一其他问题是,如果你没有重新启动终端,那么在你修改~/.bash_profile之后就可以运行你的服务器了,或者某个地方可能是一个简单的错字。

我会将此作为评论发布,但我没有得分。