我正在尝试在运行ubuntu 14.04和apache 2.4.7的aws服务器上运行基本的node.js文件
var http = require('http');
var hostname = '33.33.33.33';
var port = 3000;
var server = http.createServer(function(req, res) {
console.log(req.headers);
res.writeHead(200, { 'Content-Type': 'text/html' });
res.end('<h1>Hello World</h1>');
});
server.listen(port, hostname, function() {
console.log('Server running at http://${hostname}:${port}/');
});
主机名只是服务器的IP。应该是别的吗?主机名应该是IP还是应该是其他东西?
上面的代码给出了以下错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EADDRNOTAVAIL
at errnoException (net.js:901:11)
at Server._listen2 (net.js:1020:19)
at listen (net.js:1061:10)
at net.js:1135:9
at dns.js:72:18
at process._tickCallback (node.js:415:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:901:3
******** *********更新
我已使用localhost更新了我的代码。这摆脱了错误,并允许我运行.js文件。但是我无法从服务器访问该文件。我像这样输入IP
**.**.**.**:3000
这将返回消息:
This site can’t be reached
**.**.**.** refused to connect.
ERR_CONNECTION_REFUSED
我也尝试访问文件位于服务器上的位置,但得到的结果相同。
**.**.**.**:3000/nodelearning/c1_node_week1/node-express
我跑完后:
node myNodeApp.js
在终端中,我只需要从网络浏览器访问服务器的IP吗?我是否只需要访问根**.**.**.**:3000
,或者是否需要访问节点文件的特定位置**.**.**.**:3000/learningNode/myNodeApp.js
我只需要访问root权限吗?
所以**.**.**.**:3000
应该有用吗?
下面是我能够运行的.js文件。但我无法访问。
var express = require('express'),
http = require('http');
var hostname = 'localhost';
var port = 3000;
var app = express();
app.use(function (req,res, next) {
console.log(req.headers);
res.writeHead(200, {'Content-Type': 'text/html' });
res.end('<html><body><h1>Hello World</h1></body></html>');
});
var server = http.createServer(app);
server.listen(port, hostname, function(){
console.log('Server running at http:// NVM');
});
干杯
答案 0 :(得分:3)
问题在于
var hostname = '33.33.33.33';
因为当回收路线时,会为机器分配新的IP地址。所以这会失败。作为listen()
中的recomendation skip host参数,或者如果您仍想使用主机名
var hostname = '127.0.0.1';
或
var hostname = 'localhost';
希望它有所帮助:)