我正在编写一个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);
答案 0 :(得分:4)
有一个名为dotenv
的优秀npm包,它将从与nodeJS应用程序相同的目录中的名为.env
的文件中自动加载任何环境变量。这可以为您提供一个不同的PORT
变量项目,而不是在所有终端上全局定义一个PORT
。
就其他事情而言,听起来PORT
应该在那里(你甚至说它是echo
- 来自命令行。您是否使用node
的同一终端运行echo
了?我能想到的唯一其他问题是,如果你没有重新启动终端,那么在你修改~/.bash_profile
之后就可以运行你的服务器了,或者某个地方可能是一个简单的错字。
我会将此作为评论发布,但我没有得分。