我正在将此基本Heroku项目用于Node集群环境。
https://github.com/heroku-examples/node-workers-example
但是由于它在开始时使用工头来创建多个进程,所以我不知道如何像往常一样使用launch.json文件将其连接到VS Code Debug。
这是启动命令。
"scripts": {
"start": "nf start",
}
[花了我一会儿时间才找到可行的调试方法。但是要调试服务器,这是我目前正在使用的方法:
注意:我不使用Foreman,仅在生产中使用
这假定您在后台线程上使用Heroku中的示例,并且已在本地安装Redis(当然,还需要安装所有支持的软件包)
同时是秘密调味料!
仅脚本部分
"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"
},
我使用两个简单的步骤(在我看来)
使用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
可选地在您选择的文件中设置断点(服务器端)启动可视代码调试器现在,我可以使用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上使用的文件
web: node server.js
worker: node ./routes/api/workers/worker_redis.js
这些是重要部分
"scripts": {
"start": "nf start",
},
"dependencies": {
"concurrently": "^5.2.0",
"foreman": "^3.0.1"
}