首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nodemon无法重新加载我的项目:总是有错误EADR在使用中

nodemon无法重新加载我的项目:总是有错误EADR在使用中
EN

Stack Overflow用户
提问于 2021-06-21 03:17:31
回答 2查看 139关注 0票数 0

我创建了一个非常简单的节点服务器,并使用nodemon app.js运行它。服务器启动成功,但如果我在脚本中进行更改并保存,则会出现有关EADDR in use的错误。节点进程未终止或未退出。在package.json中,我为nodemon设置了delay参数。

我的app.js (干净)它不工作:

代码语言:javascript
复制
    const express = require('express')
    const app = express()
    const PORT = 5000;

    const routes = require('./Settings/routes')

    app.use(express.json())

    routes(app)

    app.listen(PORT, ()=>
        console.log('Сервер работает на порту ' + PORT)
    )

我的app.js (经过改进),但它也不能工作

代码语言:javascript
复制
    const express = require('express')
    const app = express()
    const PORT = 5000;

    const routes = require('./Settings/routes')

    app.use(express.json())

    routes(app)

    app.listen(PORT, ()=>
        console.log('Сервер работает на порту ' + PORT)
    )


    // first create a generic "terminator"
    terminator = function(sig){
            if (typeof sig === "string") {
                    console.log('%s: Received %s - terminating sample app ...',
                        new Date(Date.now()), sig);
                    process.kill(process.pid, sig)
            }
            console.log('%s: Node server stopped.', new Date(Date.now()) );
    };

    const arrayOfSignals = [ 'SIGUSR2', 'SIGTERM']


    // then implement it for every process signal related to exit/quit
    arrayOfSignals.forEach(function(element, index, array) {
            process.on(element, function() {
                    console.log('Ожидаем перезапуск процесса')
                    terminator(element)
            });
    });

我试着用process.exit()process.kill()

我原以为节点一定是从beginning...What开始工作的,我不是这样做的吗?

更新:控制台错误:

代码语言:javascript
复制
[nodemon] 2.0.7
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node app.js`
events.js:353
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::5000
    at Server.setupListenHandle [as _listen2] (net.js:1318:16)
    at listenInCluster (net.js:1366:12)
    at Server.listen (net.js:1452:7)
    at Function.listen (/chokoapp/backend/node_modules/express/lib/application.js:618:24)
    at Object.<anonymous> (/chokoapp/backend/app.js:15:5)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
Emitted 'error' event on Server instance at:
    at emitErrorNT (net.js:1345:8)
    at processTicksAndRejections (internal/process/task_queues.js:82:21) {
  code: 'EADDRINUSE',
  errno: -98,
  syscall: 'listen',
  address: '::',
  port: 5000
}
[nodemon] app crashed - waiting for file changes before starting...

操作系统: Ubuntu 18.04

Node -v: 14.17.0

EN

回答 2

Stack Overflow用户

发布于 2021-06-21 16:27:53

错误:侦听EADDRINUSE:地址已在使用:5000

这意味着端口5000已在使用中。因此您不能将此端口用于express服务器。

我将提出两个解决方案。

1.更改express服务器的端口号。

对类似const PORT = 8000;的内容执行const PORT = 5000;

2.杀死正在使用5000端口的进程。

首先,您需要知道哪个进程正在使用port 5000

sudo lsof -i :5000或在Windows CMD中,netstat -ano | findstr 5000

这将列出在此端口上侦听的所有PID,一旦您有了PID,您就可以使用以下命令终止它:

kill -9 {PID}

票数 2
EN

Stack Overflow用户

发布于 2021-10-26 06:39:32

当我遇到类似的问题时,一个简单的修复方法是在package.json文件中延迟Nodemon的重启:

代码语言:javascript
复制
nodemon --delay 500ms app.js

这似乎为端口的正确释放提供了一点时间。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68059282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档