Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Node.js应用程序只能从127.0.0.1/localhost访问?_Javascript_Node.js - Fatal编程技术网

Javascript 为什么Node.js应用程序只能从127.0.0.1/localhost访问?

Javascript 为什么Node.js应用程序只能从127.0.0.1/localhost访问?,javascript,node.js,Javascript,Node.js,我想教我的朋友介绍诺德,但是 我想知道为什么nodejs.org上会有这样的代码: var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(80, '127.0.0.1'); console.log('Server runnin

我想教我的朋友介绍诺德,但是 我想知道为什么nodejs.org上会有这样的代码:

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(80, '127.0.0.1');
console.log('Server running at http://127.0.0.1:80/');
托管时,它不能从公共ip访问(但仍然可以从本地主机访问) 这段代码来自express.js:

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();

// all environments
app.set('port', process.env.PORT || 80);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});
是的。请帮我修改基本代码,从nodejs的主页,使它成为可以从公共ip访问,这样我可以演示给我的朋友在一个非常基本的方式。由express.js生成的新代码运行良好

我在这里遗漏了什么?

根据文件

开始接受指定端口和主机名上的连接。如果 如果省略主机名,服务器将接受指向的连接 任何IPv4地址(INADDR\u any)

要使其接受来自所有IP的连接(
0.0.0.0
),请将其更改为如下所示

}).listen(80); // No explicit ip, defaults to all ips 0.0.0.0
console.log('Server running in port 80');

127.0.0.1是一个内部地址

localhost是指向它的默认主机名(本地域)(请参阅/etc/hosts)

0.0.0.0是您希望用于使其从外部可访问(从而使其公开)的地址

似乎在不提供主机名时,节点的require('http').createServer().listen()默认为0.0.0.0,而不是localhost的127.0.0.1