如何使VS Code调试与Foreman和nf start一起使用

问题描述 投票:0回答:1

我正在将此基本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个回答
0
投票

[花了我一会儿时间才找到可行的调试方法。但是要调试服务器,这是我目前正在使用的方法:

注意:我不使用Foreman,仅在生产中使用

假设

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

同时是秘密调味料!

开发方(DEBUG)

Package.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"
  },

完成所有工作”

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

步骤1

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

打开终端并

npm run devDebugPostman

这是我得到的输出:

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

> [email protected] devDebugPostman D:\Code\Udemy\workerthreadtest
> concurrently "npm run devRedis" "npm run devRedisWorker"

[0]
[0] > [email protected] devRedis D:\Code\Udemy\workerthreadtest
[0] > redis-server.exe
[0]
[1]
[1] > [email protected] 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

步骤2

可选地在您选择的文件中设置断点(服务器端)启动可视代码调试器现在,我可以使用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

生产侧(发布)

这些是在Heroku上使用的文件

Procfile

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

Package.json

这些是重要部分

  "scripts": {
    "start": "nf start",
  },
  "dependencies": {
    "concurrently": "^5.2.0",
    "foreman": "^3.0.1"
  }
© www.soinside.com 2019 - 2024. All rights reserved.