【问题标题】:How to get VS Code Debug to work with Foreman and nf start如何让 VS Code Debug 与 Foreman 和 nf start 一起工作
【发布时间】:2020-08-18 20:32:46
【问题描述】:

我将这个基础 Heroku 项目用于 Node 集群环境。

https://github.com/heroku-examples/node-workers-example

但是,由于它使用工头在启动时创建多个进程,所以我不知道如何像往常一样使用 launch.json 文件将其连接到 VS Code Debug。

这是启动命令。

"scripts": {
    "start": "nf start",
  }

【问题讨论】:

  • 看我的回答...这不是您想要做的事情...但它让我在不拉扯头发的情况下进行调试

标签: node.js heroku npm foreman


【解决方案1】:

我花了一点时间才想出一个可行的调试方法。但要调试服务器,这是我目前使用的:

注意:我没有使用 Foreman ...我只在生产中使用它

假设

这假设您在后台线程上使用 Heroku 中的示例,并且您在本地安装了 Redis(当然还有您需要的所有支持包)

同时也是秘方!

开发者端(调试)

包.json

只是脚本部分

  "scripts": {
    "start": "nf start",
    "server": "node server.js",
    "client": "npm start --prefix client",
    "devRedis": "redis-server.exe",
    "devRedisWorker": "node ./routes/api/workers/worker_redis.js",
    "devDebugPostman": "concurrently \"npm run devRedis\" \"npm run devRedisWorker\"",
    "dev": "concurrently \"npm run devRedis\" \"npm run server\" \"npm run client\"",
    "heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix client && npm run build --prefix client"
  },
  "dependencies": {
    "bull": "^3.14.0",
    "concurrently": "^5.2.0",
    "express": "^4.17.1",
    "foreman": "^3.0.1",
    "threads": "^1.4.1",
    "throng": "^4.0.0"
  }

让这一切“工作”

我使用两个简单(在我看来)的步骤

步骤 1

使用 NPM 启动 redis 和我的工作线程

打开终端并

npm run devDebugPostman

这是我得到的输出:

D:\Code\Udemy\workerthreadtest>npm run devDebugPostman

> workerthreadtest@0.1.0 devDebugPostman D:\Code\Udemy\workerthreadtest
> concurrently "npm run devRedis" "npm run devRedisWorker"

[0]
[0] > workerthreadtest@0.1.0 devRedis D:\Code\Udemy\workerthreadtest
[0] > redis-server.exe
[0]
[1]
[1] > workerthreadtest@0.1.0 devRedisWorker D:\Code\Udemy\workerthreadtest
[1] > node ./routes/api/workers/workerRedis.js
[1]
[0] [2720] 08 May 16:09:44.775 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server.exe /path/to/redis.conf
[0]                 _._
[0]            _.-``__ ''-._
[0]       _.-``    `.  `_.  ''-._           Redis 3.0.503 (00000000/0) 64 bit
[0]   .-`` .-```.  ```\/    _.,_ ''-._
[0]  (    '      ,       .-`  | `,    )     Running in standalone mode
[0]  |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
[0]  |    `-._   `._    /     _.-'    |     PID: 2720
[0]   `-._    `-._  `-./  _.-'    _.-'
[0]  |`-._`-._    `-.__.-'    _.-'_.-'|
[0]  |    `-._`-._        _.-'_.-'    |           http://redis.io
[0]   `-._    `-._`-.__.-'_.-'    _.-'
[0]  |`-._`-._    `-.__.-'    _.-'_.-'|
[0]  |    `-._`-._        _.-'_.-'    |
[0]   `-._    `-._`-.__.-'_.-'    _.-'
[0]       `-._    `-.__.-'    _.-'
[0]           `-._        _.-'
[0]               `-.__.-'
[0]
[0] [2720] 08 May 16:09:44.779 # Server started, Redis version 3.0.503
[0] [2720] 08 May 16:09:44.779 * DB loaded from disk: 0.000 seconds
[0] [2720] 08 May 16:09:44.779 * The server is now ready to accept connections on port 6379
[1] throng start 2 worker(s) 10 job(s) per worker
[1] throng start 2 worker(s) 10 job(s) per worker
[1] throng start 2 worker(s) 10 job(s) per worker

第二步

可选择在您选择的文件中设置断点(服务器端)

启动可视化代码调试器

现在我可以使用 Postman 将 API 调用发送到服务器并达到断点。

我的服务器启动:

C:\Program Files\nodejs\node.exe --inspect-brk=17446 server.js 
Debugger listening on ws://127.0.0.1:17446/65d39c8b-33e0-4c90-ae9b-3d12f6db4e27
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
 
server info: 
  port 4000
  redis redis://127.0.0.1:6379

生产端(RELEASE)

这些是在 Heroku 上使用的文件

Procfile

web: node server.js
worker: node ./routes/api/workers/worker_redis.js

包.json

这些是生产工作的“重要”部分

  "scripts": {
    "start": "nf start",
  },
  "dependencies": {
    "foreman": "^3.0.1"
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    相关资源
    最近更新 更多