在使用 Express.js 进行开发时,有时会遇到如下错误:
Error: getaddrinfo EACCES xxx at Object._errnoException (util.js:1041:11) at errnoException (dns.js:33:15) at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
这个错误一般是因为程序试图监听一个被禁止的端口号,或者试图监听一个需要管理员权限的端口号。
解决办法
1. 使用不需要管理员权限的端口号
可以通过设置监听的端口号为不需要管理员权限的端口号来解决这个问题。比如使用端口号 3000:
const express = require('express'); const app = express(); app.listen(3000, () => { console.log('Server started on port 3000'); });
2. 使用管理员权限启动程序
如果需要监听一个需要管理员权限的端口号,就需要使用管理员权限启动程序。在 Windows 系统中,可以在命令行中使用 runas
命令,比如:
runas /user:Administrator "node app.js"
在 Linux/Mac 系统中,可以在命令行中使用 sudo
命令,比如:
sudo node app.js
3. 开放端口号权限
如果需要在服务器上部署程序,并且需要监听需要管理员权限的端口号,可以开放端口号权限。在 Linux 系统中,需要使用 iptables
命令,比如:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
这个命令会开放端口号 80 的权限。
示例代码
const express = require('express'); const app = express(); // 设置监听端口为 3000 app.listen(3000, () => { console.log('Server started on port 3000'); });
总结
在使用 Express.js 进行开发时,遇到错误不要慌张,通过仔细阅读错误信息,并根据错误信息进行相应的解决办法,问题很快就会得到解决。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6465c088968c7c53b0669826