我使用以下命令创建了expressjs应用程序:
express -e folderName
npm install ejs --save
npm install
当我使用node app.js
运行应用程序时,出现以下错误:
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE
at errnoException (net.js:884:11)
at Server._listen2 (net.js:1022:14)
at listen (net.js:1044:10)
at Server.listen (net.js:1110:5)
at Object.<anonymous> (folderName/app.js:33:24)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
如何解决?
答案 0 :(得分:388)
您运行的另一台服务器使用相同的端口,如8080。
也许您已在其他shell中运行node app
,请关闭它并重新运行。
您可以查看PORT否。可用或不可用
netstat -tulnp | grep <port no>
答案 1 :(得分:57)
当我们有时运行我们的快递应用时,我们会收到类似的错误。在这种情况下我们必须遵循相同的规则。我们需要检查它是否在任何终端运行。 如果要查找并终止进程,请按照下列步骤操作:
OR
使用单个命令关闭所有正在运行的节点进程。
ps aux | awk '/node/{print $2}' | xargs kill -9
答案 2 :(得分:23)
实例可能仍在运行。 这将解决它。
killall node
更新:此命令仅适用于Linux / Ubuntu&amp; Mac中。
答案 3 :(得分:14)
如果您使用的是Linux,如果Nodejs没有以root用户身份运行,也会出现此问题。
从此改变:
nodejs /path/to/script.js
对此:
sudo nodejs /path/to/script.js
刚好发生在我身上,其他任何建议都没有解决。幸运的是我记得这个脚本在以root身份运行的前几天正在运行。希望这有助于某人!
免责声明:这可能不是生产环境的最佳解决方案。以root身份启动服务可能会给您的服务器/应用程序带来一些安全漏洞。在我的情况下,这是一个本地服务的解决方案,但我鼓励其他人花更多的时间来试图找出原因。
答案 4 :(得分:11)
这是因为您用于运行脚本的端口已在使用中。 您必须停止使用该帖子的所有其他节点。 为此,您可以通过
检查所有节点ps -e
OR节点进程仅使用ps -ef | grep node
这将为您提供id为
杀死所有节点进程
sudo killall -9 node
或针对特定身份证sudo kill -9 id
答案 5 :(得分:8)
我通过更改
的端口修复了错误app.set('port', process.env.PORT || 3000);<br>
并改为:
app.set('port', process.env.PORT || 8080);<br>
答案 6 :(得分:3)
端口Node尝试使用已经可以被其他程序使用。在我的情况下,我最近安装了ntop。我不得不在浏览器中打开http://localhost:3000/来实现它。找到该过程的另一种方法是here。
答案 7 :(得分:2)
这意味着您的文件正在运行。只需输入以下代码,然后重试:
sudo pkill node
答案 8 :(得分:2)
如果要使用相同的端口号,请在终端中键入kill %
,这会终止当前后台进程并释放端口以供进一步使用。
答案 9 :(得分:1)
关闭正在运行的所有其他节点服务器,即使它们位于其他终端窗口中或在不同端口上运行。这应该可以解决问题。
答案 10 :(得分:1)
在窗户上:
cmd 1 : lsof -i :<端口号>
这给出了进程ID
cmd 2 : kill -9
完成
答案 11 :(得分:1)
我今天遇到了相同的问题,并且未使用端口。下列方法有所帮助:
rm -rf node_modules && npm cache clean && npm install
npm start
答案 12 :(得分:1)
如果你已经尝试杀死所有节点实例和其他监听3000的服务(快速骨架设置使用的默认设置)无效,你应该检查以确保你的环境没有定义'端口'是什么东西意外。否则,您可能会收到相同的错误。在express skeleton的app.js文件中,你会注意到第15行:
app.set('port', process.env.PORT || 3000);
答案 13 :(得分:1)
为了解决此问题,请终止或关闭正在运行的服务器。 如果您使用的是Eclipse IDE,请按照
进行操作运行&gt;调试强>
右键点击正在运行的流程,然后点击终止。
答案 14 :(得分:0)
没有一个答案对我有用。
重新启动计算机后,我可以启动服务器并运行它。
Mac
shutdown now -r
Linux
sudo shutdown now -r
答案 15 :(得分:0)
我的答案是解决方案之一
如果您尝试使用以下命令运行角度应用程序
ng serve --open
-open在此标签引起问题的默认浏览器中打开URL。我不知道Angular 10版本不起作用后的目的是什么。我仍在分析
答案 16 :(得分:0)
如果它在Mac中,则全部与x86_64-apple-darwin13.4.0的IP有关。如果您遵循错误,则可能与x86_64-apple-darwin13.4.0有关。添加
127.0.0.1 x86_64-apple-darwin13.4.0
到 / etc / hosts 文件。然后问题就消失了
答案 17 :(得分:0)
您正在监听的端口已经被另一个进程监听。
遇到此错误时,我使用Windows PowerShell终止了该进程(因为我使用Windows)
ps
,然后可以获得进程列表Stop-process <Id>
我认为这对Windows用户有帮助答案 18 :(得分:0)
造成此错误的原因
您指定的端口上已经有其他进程在运行
简单快速的解决方案
在Linux操作系统上,例如,您已将3000指定为端口
lsof -i :3000
。如果端口3000上已在运行任何进程,则您将在控制台上看到此打印内容
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 16615 aegon 13u IPv6 183768 0t0 TCP *:3000 (LISTEN)
从输出中复制PID(进程ID)
运行sudo kill -9 16615
(您必须将PID放在-9之后)
答案 19 :(得分:0)
简单只需在Visual Studio Code中检查您的终端 因为我正在运行节点应用程序,并且我使笔记本电脑处于休眠状态,所以第二天早晨,我将笔记本电脑重新打开以进行软件开发。然后我再次运行nodemon app.js命令 第一个是晚上运行,第二个是运行我的最新命令,因此两个命令提示符正在侦听相同的端口,这就是为什么您遇到此问题的原因。 简单关闭一个终端或所有终端,然后运行您的节点app.js或nodemon app.js
答案 20 :(得分:0)
->检查端口8080上正在运行的端口或您要检查的端口
lsof -i @localhost:8080
如果有东西在运行,您可以将其关闭或使用一些kill命令将其关闭
答案 21 :(得分:0)
实际上,Ctrl + C键不会释放节点进程使用的端口。所以有这个错误。 解决该问题的方法是在server.js中使用以下代码段:
process.on('SIGINT', function() {
console.log( "\nGracefully shutting down from SIGINT (Ctrl-C)" );
// some other closing procedures go here
process.exit(1);
});
这对我有用。
您还可以检查在Graceful shutdown in NodeJS
中提到的其他解决方案答案 22 :(得分:0)
答案 23 :(得分:0)
events.js:183 throw er; //未处理的“错误”事件
我也遇到了同样的问题,并尝试了多种方法,但最终得到了这个,效果很好:
npm install ws@3.3.2 --save-dev --save-exact
有关更多说明,请参见此链接https://github.com/ionic-team/ionic-cli/issues/2922
答案 24 :(得分:0)
如果使用Windows,则可以从任务管理器中结束node.js的进程
答案 25 :(得分:0)
在我的情况下,我也必须运行vagrant reload
。即使没有节点进程在我的虚拟机中运行我的快速应用程序,我仍然会收到此错误,直到重新加载流浪盒。
答案 26 :(得分:0)
我遇到了同样的问题,我发现,我之前用CTRL + C取消的nodejs进程仍在运行。 Windows 10中的问题是Ctrl + C Doesn't Kill Gracefully nodejs。我打开了任务管理器并手动终止了该过程。 GitHub上提供的解决方案对我没有用。
答案 27 :(得分:0)
多次杀死同一个进程并且无法找到端口8000上运行的其他内容后,我意识到我试图在端口8000上运行两次:
在:
MongoClient.connect(db.url, (err, database) => {
if (err) return console.log(err);
require('./app/routes')(app, database);
app.listen(port, () => {
console.log('We are live on ' + port);
});
});
require('./app/routes')(app, {});
app.listen(port, () => {
console.log("We are live on " + port);
});
后:
MongoClient.connect(db.url, (err, database) => {
if (err) return console.log(err);
require('./app/routes')(app, database);
app.listen(port, () => {
console.log('We are live on ' + port);
});
});
require('./app/routes')(app, {});
答案 28 :(得分:0)
您也可以从Gruntfile.js更改端口并再次运行。
答案 29 :(得分:0)
停止使用该端口的服务。
sudo service NAMEOFSERVICE stop
答案 30 :(得分:0)
在我的情况下,问题是由于忘记在快递中使用next()
来使用&#39;方法调用。
如果当前的中间件没有结束请求 - 响应周期,它必须调用next()将控制权传递给下一个中间件,否则请求将被挂起。
答案 31 :(得分:-1)
尝试关闭正在使用您的端口的进程。
netstat -tulnp | grep <port_number>
安装以下pakcage可以永久修复它。
npm install ws@3.3.2 --save-dev --save-exact
在终端中运行以下命令:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
对于Arch Linux,将此行添加到/etc/sysctl.d/99-sysctl.conf:
fs.inotify.max_user_watches=524288
然后执行:
sysctl --system
这还将在重新启动后持续存在。
https://github.com/guard/listen/wiki/Increasing-the-amount-of-inotify-watchers#the-technical-details
答案 32 :(得分:-1)
npm install --save --save-exact react-scripts@2.1。
答案 33 :(得分:-1)
只需更改您的端口,可能是您的当前端口正由iis或其他服务器使用。