保存后,nodemon每隔第二次错误启动服务器

我正在使用linux mint 19.02。编写了一个简单的服务器。

const http = require('http');
const express = require('express');
const dotenv = require('dotenv').config();

const app = express();
const server = http.createServer(app);
const port = process.env.PORT // 8081;

app.get('/',(req,res) => {
    res.send('Hello world!!!');
});

这是我的package.json文件。

{
  "name": "matel","version": "1.0.0","description": "","main": "index.js","scripts": {
    "start": "node src/index.js","dev": "nodemon src/index.js"
  },...
  "license": "ISC","dependencies": {
    "dotenv": "^8.2.0","express": "^4.17.1","nodemon": "^1.19.4"
  }
}

当我使用npm run dev命令启动服务器时,出现错误。然后,通过单击浏览器中的链接http://localhost:8081/,我也会收到一个错误(逻辑)。

  

events.js:187 throw er; //未处理的“错误”事件^

     

错误:监听EADDRINUSE:Server.setupListenHandle处已经使用的地址::: 8081 [作为_listen2](net.js:1300:14)处于Server.listen(net的listenInCluster(net.js:1348:12) .js:1436:7)。 (/home/user/projects/matel/src/index.js:13:8)在Object.Module._extensions..js(内部)在Module._compile(内部/modules/cjs/loader.js:956:30) /modules/cjs/loader.js:973:10)在Module.load(internal / modules / cjs / loader.js:812:32)在Function.Module._load(internal / modules / cjs / loader.js:724) :14)在Function.Module.runmain(internal / modules / cjs / loader.js:1025:10)在internal / main / run_main_module.js:17:11在Server实例上在'emitErrorNT(net .js:1327:8)在processTicksAndRejections(内部/进程/task_queues.js:80:21){代码:'EADDRINUSE',errno:'EADDRINUSE',syscall:'listen',address:'::',port: 8081}

但是当我单击保存ctrl + s密钥文件时,一切正常。通过单击浏览器中的链接http://localhost:8081 /,我得到Hello world!!!,再次按组合键ctrl + s时,我再次收到错误消息。所以每隔第二次。

我运行了fuser -k 8081/tcp命令,此后服务器无错误启动,但是保存文件时出现错误,下次保存服务器时它将开始工作。所以每隔第二次。

服务器可能会以这种方式运行是什么原因?我怎么了?

gchen3 回答:保存后,nodemon每隔第二次错误启动服务器

因此,基于错误消息(及其发生的频率),我认为这里的问题是该端口可以由其他应用程序使用。端口8080和8081可能是常用的端口,而诸如Skype之类的应用程序的goto端口也是如此。因此,当它正常工作时,您可能会劫持该端口。因此,这就像是在不同应用程序和该端口之间进行全面的功耗之争。

所以我建议尝试使用其他端口,看看是否能解决问题?

,

您可以使用

fuser -n tcp -k portnumber
,

我认为nodemon无法在上一个会话中关闭该应用程序之前重新启动它。尝试在重新启动发生时使用命令关闭上一个会话。 重新启动服务器时,pstree不会返回要杀死的所有进程ID。

回复:更新pstree.remy并重新启动电脑。 (为我服务): sudo npm intall -g pstree.remy 要么 恢复为旧版本。 (也有效): npm i pstree.remy@1.1.0

,

打开您的终端并执行killall node。这应该可以解决您的问题。

killall-将按名称终止进程,因此在这种情况下,它将终止node进程。

本文链接:https://www.f2er.com/3153061.html

大家都在问