首页 > 解决方案 > 一个 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,它运行良好,但另一个应用程序没有。

有谁知道这里还有什么问题?如果您需要查看任何其他代码,请告诉我。

标签: node.jsmongodbexpressmongooselocalhost

解决方案


据我所知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');
});

推荐阅读