node.js - 一个 nodejs/express 应用程序只能在 localhost 上运行,但不使用 IP 地址,另一个 nodejs/express 应用程序可以正常工作吗?
问题描述
我有一个超级简单的 Hello World 应用程序,我可以运行它,myipaddress:3000
而不是仅仅localhost:3000
通过执行:
var express = require("express"),
app = express(),
bodyParser = require("body-parser"),
http = require("http");
app.use(bodyParser.urlencoded({ extended: true }));
app.get("/", function(req, res) {
res.render("home.ejs");
});
app.listen(3000, "0.0.0.0", function() {
console.log('Server running on port 3000');
});
但我有另一个涉及更多的 node.js/express 应用程序,它也使用 mongoDB/mongoose,当我将其更改app.listen
为 include"0.0.0.0"
时,它仍然只能在localhost:3000
. 我不确定是什么原因造成的,也许与 mongoDB 有关?这是我能想到的那些应用程序之间唯一真正的区别,这会有所作为。我不会同时在端口 3000 上运行它们。我还用不同的端口测试了 Hello World,它运行良好,但另一个应用程序没有。
有谁知道这里还有什么问题?如果您需要查看任何其他代码,请告诉我。
解决方案
据我所知0.0.0.0
,它是作为主机从外部接口访问的。并且如果您在调用时未指定主机app.listen()
服务器将在所有可用接口上运行,即。开启,0.0.0.0
但您可以绑定 IP 地址,例如
app.listen(3000, '127.0.0.1', function(){
console.log('Server running on port 3000');
});
推荐阅读
- angular - 在 Angular 应用程序的模板中依赖多个 Observable
- python - 删除警告并登录最小的 pyspark 单元测试
- elixir - 基于 JAVA 的 Elixir 中的循环元素
- css - Bootstrap Nav 丸一:访问不工作
- android - 如何在 Appium for Android 中自动输入按键事件
- arrays - SQLIte MAX vs Postgresql GREATEST,带字符串
- android - 将数据传递给不同的活动,但重定向到另一个
- openstreetmap - 从 OSRM 匹配服务获取方式 ID
- python - 无法将套接字与外部 IP 绑定,只有 localhost 有效
- javascript - 为什么数据表上的 ajax.reload 会禁用按钮?