【问题标题】:Running simple node js server运行简单的节点 js 服务器
【发布时间】:2018-08-31 16:15:43
【问题描述】:

我在我的 Mac 上运行一个简单的节点 js 服务器。我也安装了mamp。仅供参考。我可以很好地访问 localhost:8888 并预览网页。但是,在我的 server.js 文件中,如果我像这样将主机作为参数包含到 server.listen 函数中

server.listen(127.0.0.1, 8888, function(){
        console.log('Server running');
})

我的终端出现以下错误。

Error: listen EADDRINUSE 127.0.0.1
    at Object._errnoException (util.js:992:11)
    at _exceptionWithHostPort (util.js:1014:20)
    at Server.setupListenHandle [as _listen2] (net.js:1338:19)
    at listenInCluster (net.js:1396:12)
    at Server.listen (net.js:1491:5)
    at Object.<anonymous> (/Users/username/Desktop/nodeServer/server.js:12:8)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
Users-Mac-Pro:nodeServer user$ 

如果我有

server.listen(8888, function(){
        console.log('Server running');
})

一切正常。这与我安装了 mamp 有什么关系?只是想了解为什么一个有效而另一个无效。

【问题讨论】:

  • 8888 端口上没有运行任何东西。我尝试了许多端口,但都不起作用。我认为这可能与我的 apache 网络配置有关。

标签: node.js


【解决方案1】:

尝试将主机放在端口之后,如下所示

server.listen(8888, '127.0.0.1', function() {
console.log('Server running');
})

app.listen documentation

app.listen([port[, host[, backlog]]][, callback])

【讨论】:

  • 这就是问题所在。我不得不颠倒参数的顺序。主机需要在端口之后。非常感谢!
【解决方案2】:

其他一些进程可能一直在使用 8888 端口。您可以终止该进程或为您的 nodejs 服务器使用其他端口。

要使用端口 8888 获取进程的进程 ID,请使用

lsof -i tcp:8888

并使用

杀死进程

kill -9 &lt;pid&gt;

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    您当前可能正在该端口上运行您的服务器。尝试:

    killall node
    

    【讨论】:

    • 我刚刚在终端中运行了该命令,但端口 8888 上没有运行任何进程。但我仍然收到此错误。有什么线索吗?
    猜你喜欢
    • 2016-08-14
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2017-05-09
    • 2020-11-12
    • 2016-08-06
    相关资源
    最近更新 更多