【问题标题】:Port specified when running node is undefined未定义运行节点时指定的端口
【发布时间】:2018-07-31 10:32:41
【问题描述】:

当我运行节点项目时指定端口未定义。

> sf-chain@1.0.0 dev E:\System\dev\node\sf-chain
> nodemon ./app "HTTP_PORT=3002" "P2P_PORT=5002" "PEERS=ws://localhost:5001"

[nodemon] 1.18.3
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node ./app HTTP_PORT=3002 P2P_PORT=5002 PEERS=ws://localhost:5001`
process.env.HTTP_PORT :: undefined
HTTP_PORT :: 3001
Listening for peer-to-peer connections on: 5001
events.js:160
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE :::3001
    at Object.exports._errnoException (util.js:1022:11)
    at exports._exceptionWithHostPort (util.js:1045:20)
    at Server._listen2 (net.js:1259:14)
    at listen (net.js:1295:10)
    at Server.listen (net.js:1391:5)
    at EventEmitter.listen (E:\System\dev\node\sf-chain\node_modules\express\lib\application.js:618:24)
    at Object.<anonymous> (E:\System\dev\node\sf-chain\app\index.js:28:5)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
[nodemon] app crashed - waiting for file changes before starting...

我使用

运行了第一个实例
npm run dev

const HTTP_PORT = process.env.HTTP_PORT || 3001;

应用程序开始在端口 3001 上成功运行,因为我没有在运行命令中指定 HTTP_PORT。 但是当尝试通过使用以下命令指定 HTTP_PORT 来运行另一个实例时

npm run dev HTTP_PORT=3002 P2P_PORT=5002 PEERS=ws://localhost:5001

我收到此错误。

Error: listen EADDRINUSE :::3001

这意味着在运行时指定的 HTTP_PORT 被视为未定义,这就是它尝试将 3001 端口用于第一个实例的原因。

【问题讨论】:

  • 这是特定于 dev 脚本及其运行的任何内容。它们没有显示出来。

标签: node.js environment-variables


【解决方案1】:

错误:听 EADDRINUSE - 当某些东西已经在该端口上运行/监听时会出现错误

这是因为有时同一个nodejs的实例获取了端口并且没有正确地杀死/退出进程,

如果你有 Ubuntu,首先检查哪个进程正在使用端口

lsof -i :3001 // Port no.

然后输出将是这样的。

COMMAND  PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
node    2496 nasiruddin   13u  IPv6  37696      0t0  TCP *:3001 (LISTEN)

使用 PID

杀死
kill 2496

然后重新开始

【讨论】:

  • 在代码中,我有const HTTP_PORT = process.env.HTTP_PORT || 3001;,这意味着如果在启动应用程序时没有指定 HTTP_PORT,它应该使用 3001 作为端口。但我在运行第二个实例的命令中指定了 HTTP_PORT,但 HTTP_PORT 环境变量看到指定为undefined 的端口。
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 2023-01-14
  • 2021-04-01
  • 2020-01-06
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多