RangeError:" port"参数必须是> = 0和< 65536

时间:2016-09-12 00:09:32

标签: node.js 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。

在网上看,它似乎是节点v6中的一个错误(我有v6.5.0)。我是nodejs的新手,非常感谢有关如何解决此问题的任何帮助。感谢。

4 个答案:

答案 0 :(得分:2)

  

新版本的节点存在问题。

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

它也被提升为电子项目的issue

为了快速处理,您还可以使用try.....catch

答案 1 :(得分:0)

这是一个Express JS问题。确保你写这样的端口监听器:

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

答案 2 :(得分:0)

可能是因为 localhost 没有用系统的“主机” 文件中的必需语法定义。

文件可以位于@:

=> etc / hosts

(位于 linux 的文件上方)

=> c:\ Windows \ System32 \ Drivers \ \ 主机

Windows 的上方文件)

即文件输入错误。

因此,请尝试使用下面的文本替换该文件中的所有内容,因为这是 hosts 文件中总是可以正常使用的默认文本:

127.0.0.1本地主机

255.255.255.255广播主机

:: 1本地主机

fe80 :: 1%lo0本地主机

答案 3 :(得分:-3)

如果您收到ADDRINUSE或类似错误,请确保您的程序干净利落。您也可以尝试kill命令或使用pm2。

但是如果你真的需要寻找一个端口,你可以发布剩下的代码吗?它说错误在server.listen中。你确定在之后开始听 findAPortNotInUse了吗?