更改 Node.js 监听端口

33

我刚在Windows上安装了node.js。我有这个简单的代码,但无法运行:

我得到如下错误信息: Error: listen EADDRINUSE

是否有配置文件可以告诉node.js监听特定的端口?

问题是我已经让Apache监听了80端口。

编辑:

var http = require('http'); 
var url = require('url'); 

http.createServer(function (req, res) { 
 console.log("Request: " + req.method + " to " + req.url); 
 res.writeHead(200, "OK"); 
 res.write("<h1>Hello</h1>Node.js is working"); 
 res.end(); 
}).listen(5454); 
console.log("Ready on port 5454");

var http = require('http'); var url = require('url');http.createServer(function (req, res) { console.log("请求: " + req.method + " 到 " + req.url);res.writeHead(200, "OK"); res.write("

你好

Node.js 已经在工作"); res.end();
}).listen(5454); console.log("已准备就绪,端口为 5454");
- jim dif
3个回答

32

如果您不自己创建配置文件,则没有配置文件可用。但是,端口是listen()函数的参数。例如,要侦听8124端口:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(8124, "127.0.0.1");
console.log('Server running at http://127.0.0.1:8124/');

如果你无法找到一个开放的端口,你可以进入命令行并输入:

netstat -ano

查看每个适配器中正在使用的所有端口的列表。


我正在跟随的教程说要先进入DOS命令行,然后输入node t.js,其中t.js是我的测试文件的名称。因此错误出现在命令行窗口中。 - jim dif
你尝试监听哪个端口?尝试一些常见的端口,比如818080。你还是遇到了EADDRINUSE错误吗? - Mike Christensen
Mike,谢谢。我使用了上面的代码,并将端口设置为8124,但关键是要将我的测试文件放在与nodejs相同的目录中并且与dos提示符相对应的目录中。 - jim dif
我在app.js的末尾添加了这些行,但它仍在监听端口1337。 - Vignesh Subramanian

10

我通常在app.js文件中手动设置我所监听的端口(假设您正在使用express.js)。

var server = app.listen(8080, function() {
    console.log('Ready on port %d', server.address().port);
});

这将会在控制台上记录监听端口8080成功


3
您可以从http://nodejs.org/获取Node.js配置。重要的是,您需要记住文件app.js中的配置,其中包括端口号、主机和其他设置,这些设置适用于我。
backendSettings = {
"scheme":"https / http ",
"host":"您的网站URL",
"port":49165, //端口号
'sslKeyPath': '密钥路径',
'sslCertPath': 'SSL证书路径',
'sslCAPath': '',
"resource":"/socket.io",
"baseAuthPath": '/nodejs/',
"publishUrl":"发布",
"serviceKey":"",
"backend":{
"port":443,
"scheme": 'https / http', //无论您的网站方案是什么
"host":"主机名",
"messagePath":"/nodejs/message/"},
"clientsCanWriteToChannels":false,
"clientsCanWriteToClients":false,
"extensions":"",
"debug":false,
"addUserToChannelUrl": 'user/channel/add/:channel/:uid',
"publishMessageToContentChannelUrl": 'content/token/message',
"transports":["websocket",
"flashsocket",
"htmlfile",
"xhr-polling",
"jsonp-polling"],
"jsMinification":true,
"jsEtag":true,
"logLevel":1};

如果出现“Error: listen EADDRINUSE”错误,请更改端口号,例如,在此处我使用的是“49165”,因此您可以使用其他端口,如49170或其他端口。
您可以参考以下文章:http://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-shared-hosting-accounts


我该如何在服务器端更改Node.js应用程序的端口? - Deep Kakkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接