RangeError: "port" argument must be >= 0 and < 65536

RangeError: "port" argument must be >= 0 and < 65536

我有一个用 electron 和 nodejs 编写的应用程序,我正在尝试 运行。它使用模块 portscanner 检查特定范围内的开放端口:

portscanner.findAPortNotInUse(3000, 3010, '127.0.0.1', function(error, port) {
  console.log("Free port: " + port)

})

但是,我收到此错误:

RangeError: "port" argument must be >= 0 and < 65536
    at assertPort (internal/net.js:17:11)
    at Server.listen (net.js:1389:5)

虽然我的范围明显小于65536大于0.

网上查了一下,好像是node v6的错误(我有v6.5.0)。我是 nodejs 的新手,非常感谢有关如何解决此问题的任何帮助。谢谢

如果您收到 ADDRINUSE 或类似错误,请确保您的程序正常退出。您也可以尝试 kill 命令或使用 pm2.

但是如果你真的需要寻找一个端口,你能post剩下的代码吗?它说错误在 server.listen 中。您确定在 findAPortNotInUse 返回后开始收听吗?

It's an issue with newer versions of node.

https://github.com/FWeinb/nodeshot/issues/11

它也在 electron 项目中作为 issue 提出。

为了快速处理也可以使用try.....catch

这是一个 Express JS 问题。确保像这样编写端口侦听器:

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

可能是因为 localhost 未使用 "hosts" 中的 所需语法 定义系统文件。

文件位于@:

=> etc/hosts

(以上文件为 linux

=> c:\ Windows \System32\Drivers\ etc \ hosts

(以上文件为 Windows

即文件有一些错误的输入。

所以,尝试用下面的文本替换该文件中的所有内容,因为这是 hosts 文件中正常工作时始终存在的默认文本:

127.0.0.1 本地主机

255.255.255.255 广播主机

::1 本地主机

fe80::1%lo0 本地主机

最好先将其转换为数字,然后再使用。

类似的东西。 parseInt(process.env.PORT 作为字符串,10) || 3000

当我尝试在 0 - 65536 范围内的 8000 时,我也遇到同样的错误

  • 我发送了这样的请求“http:127.0.0.1:8000status”而不是“http:127.0.0.1:8000/status”
  • 检查一次“/”