无法使用我的机器的IP地址运行我的Node.Js应用程序,但可以使用localhost

时间:2016-10-20 15:40:08

标签: javascript node.js express

所以我设置了一个节点js app来监听我机器的端口5050:

所以,当我转到http://localhost:5050/myapp我的应用程序加载正常。我正在使用快速框架,因此我的监听框架工作如下:

var server = app.listen(5050, '0.0.0.0', function () {
    console.log("App started on port 5050")
});

我还做了一个netstat(我使用的是Windows 10机器),并且本地没有环回到本地IP地址。

然而,当我执行我的机器ip例如。 http://192.168.0.231:5050/myapp 我一直得到:无法访问此网站

编辑:我不认为我很清楚

我关闭了防火墙,我尝试过没有在app.listen中指定IP地址。我不认为这是代码的问题,因为当我尝试使用一些简单的测试应用程序并尝试使用我的IP地址运行时,这也会超时

2 个答案:

答案 0 :(得分:0)

尝试使用listen without ip parameter

var server = app.listen(5050, function () {
   console.log("App started on port 5050")
});  

答案 1 :(得分:0)

在运行nodejs应用程序时,我也遇到了与您提到的相同的问题。在我的代码看起来像这样。

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var mongoChat = require('./app/mongo_chat');

var ip = "127.0.0.1";
var port = 3000;
var users = {};
var WhisperChek = false;
var storage=[];
app.use(express.static(__dirname + '/public'));
app.get('/', function (req, res) {
    res.sendfile('index.html');
});
//socket connection
    io.on('connection', function (socket) {
        //console.log('Someone connected!');
        mongoChat.mognolizer(io,socket, users, WhisperChek);
        function updateNicknames() {
            io.emit('nickname', Object.keys(users));
        }
//disconnect socket
        socket.on('disconnect', function (data) {
            if (!socket.Username)return;
            delete users[socket.Username];
            updateNicknames();
        });
    });
http.listen(port,ip, function () {
    console.log('listening on *:3000');
});

但是,我从代码中删除了var ip="127.0.0.1"并将listen函数更新为:

http.listen(port, function () {
        console.log('listening on *:3000');
    });

现在,我的应用程序既在localhost上运行,也在localhost:3000运行,而且它也运行在我的ipaddress上,即ipaddress:3000上。问题在于我们将ip作为127.0.0.1给出它只在localhost上运行,因为我们使用的ipaddress是私有的,它随着网络连接的变化而变化。检查一下它是否适合你。