我有一个用电子和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的新手,非常感谢有关如何解决此问题的任何帮助。感谢。
答案 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了吗?