当前在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
这似乎意味着我无法绑定到端口。我已经找到了各种有关为什么可能这样的信息,但似乎都没有关系-似乎都与权限有关,但是可以肯定process.env.OPENSHIFT_NODEJS_ *是我有权绑定到它的地方吗?
最佳答案
这意味着其他进程正在使用端口process.env.OPENSHIFT_NODEJS_PORT
。 EACCESS表示拒绝权限,而不是EADDRINUSE。尝试更改为未使用的端口,例如8080。您可以使用以下命令检查已使用的端口:
netstat -tulpn
netstat -tulpn | grep :$OPENSHIFT_NODEJS_PORT //filter by your port
关于node.js - EADDRINUSE与OpenShift上的Node.js,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19996051/