我正在编写一个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);
最佳答案
有一个很棒的npm包dotenv
,它将从nodeJS应用程序所在目录的.env
文件中自动加载任何环境变量。这样可以为您提供一个不同的PORT
变量项目,而不是在所有终端上全局定义一个PORT
。
至于其他所有内容,听起来好像PORT
应该在那儿(您甚至从命令行说过它是echo
-ing)。您是否在使用node
的同一终端上运行了echo
?我唯一想到的其他问题是,如果不重新启动终端,则在修改~/.bash_profile
或在某个地方输入简单的错字后,就无法运行服务器。
我会将其发布为评论,但是我没有分数。