我花了一点时间才想出一个可行的调试方法。但要调试服务器,这是我目前使用的:
注意:我没有使用 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"
}