即使导出后,process.envvariables也是未定义的
我正在编写一个Node.js快速应用程序,并希望使用环境variables来设置服务器应运行的端口。
但是,我似乎无法得到process.env.PORT
读取我的PORT
环境variables。
我已经定义了PORT环境variables使用export
如下所示: export PORT=1234
我也已经将此行添加到~/.bash_profile
文件,但process.env.PORT
保持未定义。
当我在terminal运行echo $PORT
时,它显示正确的值( 1234
)。
我正在运行Node V0.12.7和OSX El Capitan 10.11.1,并且无法find任何可能导致此问题的额外线索。
谢谢!
编辑:这是在尝试将process.env.port
分配给port
variables之前执行的代码
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);
有一个很好的叫做dotenv
npm软件包,它将自动从nodeJS应用程序所在的同一目录下的.env文件中加载任何环境variables。 这可能会给你一个不同的PORT
variables项目来投影,而不是在所有terminal上全局定义一个PORT
。
至于其他的一切,听起来像PORT
应该在那里(你甚至说它正确地从命令行echo
)。 你使用echo
运行同一个terminal的node
吗? 我能想到的唯一的其他问题是,如果您在修改~/.bash_profile
之后没有重新启动正在运行服务器的terminal,或者可能是某个简单的input错误。
我会张贴这个评论,但我没有得分。