【问题标题】:Command not working in the middle of a Heroku tutorial [duplicate]命令在 Heroku 教程中不起作用 [重复]
【发布时间】:2023-01-30 22:42:51
【问题描述】:

我正在关注 Heroku 文档 (https://devcenter.heroku.com/articles/getting-started-with-nodejs) 中的教程,并在运行命令时遇到此问题:

% heroku local web

在 Mac (M1) 上,虽然本教程的第一部分一切顺利,但在部分在本地运行应用程序,这是我得到的(不是应该发生的):

myveryname@Me-MacBook-Air node-js-getting-started % heroku local web
[OKAY] Loaded ENV .env File as KEY=VALUE Format
2:20:52 PM web.1 |  > node-js-getting-started@0.3.0 start
2:20:52 PM web.1 |  > node index.js
2:20:52 PM web.1 |  node:events:491
2:20:52 PM web.1 |        throw er; // Unhandled 'error' event
2:20:52 PM web.1 |        ^
2:20:52 PM web.1 |  Error: listen EADDRINUSE: address already in use :::5000
2:20:52 PM web.1 |      at Server.setupListenHandle [as _listen2] (node:net:1432:16)
2:20:52 PM web.1 |      at listenInCluster (node:net:1480:12)
2:20:52 PM web.1 |      at Server.listen (node:net:1568:7)
2:20:52 PM web.1 |      at Function.listen (/Users/myveryname/Documents/Heroku/node-js-getting-started/node_modules/express/lib/application.js:635:24)
2:20:52 PM web.1 |      at Object.<anonymous> (/Users/myveryname/Documents/Heroku/node-js-getting-started/index.js:10:4)
2:20:52 PM web.1 |      at Module._compile (node:internal/modules/cjs/loader:1126:14)
2:20:52 PM web.1 |      at Object.Module._extensions..js (node:internal/modules/cjs/loader:1180:10)
2:20:52 PM web.1 |      at Module.load (node:internal/modules/cjs/loader:1004:32)
2:20:52 PM web.1 |      at Function.Module._load (node:internal/modules/cjs/loader:839:12)
2:20:52 PM web.1 |      at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
2:20:52 PM web.1 |  Emitted 'error' event on Server instance at:
2:20:52 PM web.1 |      at emitErrorNT (node:net:1459:8)
2:20:52 PM web.1 |      at processTicksAndRejections (node:internal/process/task_queues:83:21) {
2:20:52 PM web.1 |    code: 'EADDRINUSE',
2:20:52 PM web.1 |    errno: -48,
2:20:52 PM web.1 |    syscall: 'listen',
2:20:52 PM web.1 |    address: '::',
2:20:52 PM web.1 |    port: 5000
2:20:52 PM web.1 |  }
[DONE] Killing all processes with signal  SIGINT
2:20:52 PM web.1 Exited with exit code null
myveryname@Me-MacBook-Air node-js-getting-started % 

在网上搜索似乎表明 Mac 可能会自己使用 5000 端口。 当我在我的网络浏览器中查看 http://localhost:5000/ 时,看起来端口 5000 确实有点忙(尽管页面完全显示为白色)。 但我不知道它在做什么。即使我重新启动计算机也不会改变。

我一定不是唯一遇到这个问题的人。那么处理这种情况并能够继续教程结尾的正确方法是什么?

【问题讨论】:

    标签: node.js heroku heroku-cli


    【解决方案1】:

    在 mac 上,Air Play 控制中心监听端口 5000。 您可以禁用 airplay receiver 以释放端口,也可以将代码中的端口更改为 5001 之类的端口

    您也可以运行此命令lsof -i :5000 来检查哪个进程正在使用 5000 端口

    参考:https://developer.apple.com/forums/thread/682332

    【讨论】:

    • 感谢您的回答。我使用了“lsof -i :5000”命令并看到了结果。但至于解决方案,我使用的是 Mac OS Ventura (13.0),你提到的链接中的解释似乎对禁用 airplay 无效。我在这里找到了一些有用的东西:discussions.apple.com/thread/254343678。此外,对于您的第二个解决方案,您如何将代码更改为另一个端口?我在 index.js 中将 5000 更改为 5001,但它没有完成这项工作。
    • 在第 3 行的 index.js 文件中,您可以更改为类似 const POST = process.env.PORT || 5001 的内容,但如果它仍然不起作用,您可以运行 lsof 来检查该端口是否真的很忙,如果是,则更改为另一个端口
    • 这就是我所做的,但没有用。似乎这一行被忽略了。
    猜你喜欢
    • 2014-04-10
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多