Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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 只能从运行服务器的计算机访问Express Node.js服务器_Javascript_Node.js_Express - Fatal编程技术网

Javascript 只能从运行服务器的计算机访问Express Node.js服务器

Javascript 只能从运行服务器的计算机访问Express Node.js服务器,javascript,node.js,express,Javascript,Node.js,Express,我在使用express时遇到了一个新手问题。我正在使用Ubuntu14.04,在终端中创建一个新的dir并运行express,它设置了一个项目模板。然后运行npm安装来安装依赖项。然后编辑“views/layout.jade”进行更改!!!在尝试运行服务器而不进行更改时,按照节点错误所建议的方式doctype html 之后,我通过在终端上输入node app.js启动服务器,然后可以使用localhost:3000或192.168.1.13:3000在浏览器中查看默认页面 我的理解是,我应该能

我在使用express时遇到了一个新手问题。我正在使用Ubuntu14.04,在终端中创建一个新的dir并运行express,它设置了一个项目模板。然后运行npm安装来安装依赖项。然后编辑“views/layout.jade”进行更改!!!在尝试运行服务器而不进行更改时,按照节点错误所建议的方式doctype html

之后,我通过在终端上输入node app.js启动服务器,然后可以使用localhost:3000或192.168.1.13:3000在浏览器中查看默认页面

我的理解是,我应该能够从本地网络中的另一台计算机使用192.168.1.13:3000。然而,当我尝试这个时,我连接到192.168.1.13。。。大约30秒到一分钟,然后它说连接超时了。。。位于192.168.1.13的服务器响应时间过长

我在firefox和chrome的windows桌面和android手机上都试过。我还尝试将其设置为端口80而不是3000,结果相同。我尝试在app.listen中的端口后添加“0.0.0.0”,但结果也一样

在这个Ubuntu安装中,我从来没有设置过防火墙或端口转发,所以我相信这些不应该是问题所在?我的路由器有问题吗?也许我错了

这是相关文件-

app.js:

/**
 * Module dependencies.
 */

var express = require('express')
  , routes = require('./routes');

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function(){
  app.use(express.errorHandler());
});

// Routes

app.get('/', routes.index);

app.listen(3000, function(){
  console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
});
routes/index.js:

/*
 * GET home page.
 */

exports.index = function(req, res){
  res.render('index', { title: 'Express' })
};
视图/layout.jade:

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body!= body
views/index.jade:

h1= title
p Welcome to #{title}

如果我遗漏了什么,请告诉我。干杯。

我解决了这个问题,按照的建议,用以下命令打开带有iptables的传入端口3000:

iptables -I INPUT 1 -p tcp --dport 3000 -j ACCEPT

我解决了这个问题,按照建议使用iptables打开传入端口3000,并使用以下命令:

iptables -I INPUT 1 -p tcp --dport 3000 -j ACCEPT

你能从你用来测试的其他计算机上访问那台计算机吗???你的ubuntu安装在虚拟机上吗?@Naing Lin Aung-似乎没有,在windows网络浏览器中看不到。此外,在其上运行python-m SimpleHTTPServer似乎无法从windows计算机访问。这就是你的意思吗?@March-不在虚拟机中。在笔记本电脑上运行。可能是防火墙问题。检查你的iptables规则,你可以通过谷歌找到如何以及如何打开传入端口3000以供其他机器查看。你可以从用于测试的其他计算机访问该计算机吗???你的ubuntu安装在虚拟机中吗?@Naing Lin Aung-似乎没有,在windows网络资源管理器中看不到。此外,在其上运行python-m SimpleHTTPServer似乎无法从windows计算机访问。这就是你的意思吗?@March-不在虚拟机中。在笔记本电脑上运行。可能是防火墙问题。检查您的iptables规则,您可以通过谷歌找到如何以及如何打开传入端口3000以供其他机器查看