【问题标题】:Error: listen EADDRINUSE: address already in use :::4000错误:监听 EADDRINUSE:地址已在使用 :::4000
【发布时间】:2020-12-30 20:47:50
【问题描述】:

我一直在这个帖子上寻找答案:Node / Express: EADDRINUSE, Address already in use - Kill server

虽然我不认为它回答了我的问题,因为我不想杀死正在运行的进程而是重新启动服务。

$ npm run start

> graphql-basics@1.0.0 start /home/phill/Documents/graphql-course/graphql-basics
> nodemon src/index.js --exec babel-node

[nodemon] 1.17.5
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `babel-node src/index.js`
The server is up!


[nodemon] restarting due to changes...
[nodemon] starting `babel-node src/index.js`
events.js:174
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::4000

基本上它会重启服务器而不杀死之前的进程?

手动终止进程不会解决此问题

这是我的package.json

{
  "name": "graphql-basics",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "nodemon src/index.js --exec babel-node",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "babel-cli": "^6.26.0",
    "babel-preset-env": "^1.7.0",
    "graphql-yoga": "^1.14.10"
  },
  "devDependencies": {
    "nodemon": "^1.17.5"
  }
}

const server = new GraphQLServer({
    typeDefs,
    resolvers
})

server.start(() => {
    console.log('The server is up!')
})

//should i use process.on('SIGTERM',...) and kill it somehow?

【问题讨论】:

  • 尝试从启动脚本中删除`--exec babel-node`,然后手动终止进程,然后再次npm start
  • 你试过了吗?没有它我无法运行graphql

标签: node.js graphql nodemon


【解决方案1】:

您有 2 个选项来解决此问题。

  1. 使用root用户执行killall node命令
  2. 设置可用端口。 var port = process.env.PORT || 8080;

【讨论】:

    【解决方案2】:

    Nodemon 提供了延迟选项。我通过在与您相同的情况下插入该选项来解决它。请参考以下链接。 github.com/nodemon/delaying-restarting

    "start": "nodemon --delay 300ms src/index.js --exec babel-node"

    {
      "name": "graphql-basics",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "start": "nodemon --delay 300ms src/index.js --exec babel-node",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC",
      "dependencies": {
        "babel-cli": "^6.26.0",
        "babel-preset-env": "^1.7.0",
        "graphql-yoga": "^1.14.10"
      },
      "devDependencies": {
        "nodemon": "^1.17.5"
      }
    }
    

    【讨论】:

    • 嗯由于某种原因延迟没有太大变化
    • 即使我增加延迟也可以吗?
    • 在你的情况下看起来像一个不同的问题:( 很难测试,因为这种情况不会重现错误。当我删除--exec babel-node时它是否正常工作?我很好奇是否有任何依赖 babel-node
    • 我在下面发现了一个类似的问题,请参考。不幸的是,它无能为力。 github.com/remy/nodemon/issues/1477
    • 是的,确实很奇怪,我会看看它。可能是版本问题
    猜你喜欢
    • 2021-02-11
    • 2020-11-09
    • 2020-04-08
    • 2021-02-26
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多