node.js - OpenShift 上的 EADDRINUSE 与 Node.js

标签 node.js port openshift

在 OpenShift 上运行的 Node.js 中编写测试应用程序,但目前无法启动。

这是我的代码:

#!/bin/env node

var http = require('http');

var ip = process.env.OPENSHIFT_NODEJS_IP;
var port = process.env.OPENSHIFT_NODEJS_PORT;

http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(ip, port);
console.log('Server running');

我收到错误

events.js:72
    throw er; // Unhandled 'error' event
          ^
Error: listen EADDRINUSE
at errnoException (net.js:884:11)
at Server._listen2 (net.js:1003:19)
at listen (net.js:1044:10)
at Server.listen (net.js:1104:5)
at Object.<anonymous> (/var/lib/openshift/52854c6f4382ec071400051d/app-root/runtime/repo/server.js:11:4)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
DEBUG: Program node server.js exited with code 8

这似乎意味着我无法绑定(bind)到该端口。我找到了有关为什么会出现这种情况的各种信息,但似乎都不相关 - 这一切似乎都与权限有关,但 process.env.OPENSHIFT_NODEJS_* 的要点肯定是我有权绑定(bind)到它?

最佳答案

这意味着其他进程正在使用您的端口process.env.OPENSHIFT_NODEJS_PORT。 EACCESS 意味着权限被拒绝,而不是 EADDRINUSE。尝试更改为未使用的端口,例如 8080。您可以使用以下命令检查已使用的端口:

netstat -tulpn
netstat -tulpn | grep :$OPENSHIFT_NODEJS_PORT //filter by your port

关于node.js - OpenShift 上的 EADDRINUSE 与 Node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19996051/

相关文章:

docker - 将 LAN IP 地址分配给与主机 IP 地址不同的 Docker 容器

Openshift:自动更新上游镜像

web-services - 如何找到我的密码?

javascript - Passport JS 中的 req.user 数据未传递到 Angular Controller

node.js - express.session 在服务器端在哪里存储哈希 session key ?

javascript - promise 重试设计模式

javascript - 如何从 Express 中间件函数传递值?

port - 如何将静态端口分配给容器?

c++ - 读取未正确存储在数组中的字节

mongodb - 为什么在尝试连接到运行简单 mongo 容器的 OKD pod 时出现 "message len 1347703880 is invalid. Min 16 Max: 48000000"错误?