我已经在 C9 上开发了一个 nodejs 应用程序有一段时间了,现在我正在尝试在我的远程主机上制作它的副本。到目前为止,在新环境node app.js
中在控制台中工作,但我无法在浏览器中查看该网站。
好像是端口问题。我的 app.js 文件是这样的:
var express = require("express"),
app = express();
(...)
app.listen(process.env.PORT, process.env.IP, function(){
console.log(process.env.PORT);
console.log("The YelpCamp Server Has Started!");
});
Run Code Online (Sandbox Code Playgroud)
在C9环境下,日志告诉我process.env.PORT是8080。但是在新环境下,日志告诉我process.env.PORT是未定义的。
我怎样才能解决这个问题 ?
这类似于这个较旧的问题,只是我的远程操作系统是 Linux 而不是 Windows。这个问题的答案说应该“修改 web.config 文件”,但我在我的远程主机上找不到它,我不确定它在 Linux 和 Windows 下的工作方式是否相同。
process.env
变量由“环境”设置。基本上,它们充当对系统环境变量的访问。如果您尚未在尝试运行系统的 shell 中设置该环境变量,则尝试访问process.env.PORT
它时它将返回undefined
。
您可以在node app.js
使用以下命令运行之前设置环境变量。
$ PORT=8080
$ node app.js
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们在现有 shell 中设置环境变量,然后使用 app.js 文件调用 node。环境变量从父进程传递到它们启动的进程中,如果您按顺序运行这两个,您将在当前 shell 中设置一个环境变量,node
然后在它启动时接收该变量(以及所有其他环境变量) )。
要查看现有节点进程可用的所有环境变量,您可以运行console.log(process.env);
.
这也是一样的process.env.IP
。
旁注:C9 和其他类似的环境通常有很多预先设置的环境变量。这就是它在 C9 上可用的原因。Heroku 也是如此,这是因为他们的系统必须规定您的服务应该使用的端口,以便可以为该端口预先配置他们的负载均衡器/反向代理。
归档时间: |
|
查看次数: |
7567 次 |
最近记录: |