[英]How to properly delay the loading of a Node/Express API using tasks.json in VS Code
我有一個微服務項目,我在單個 VS Code 實例中進行調試。 我在 launch.json 中使用 Compounds 來啟動/調試。
有一個所有其他服務都依賴的“元數據”服務,因此它需要在任何其他服務啟動之前運行。
我已經解決了這個問題,在過去的 10 個月里它對我來說一直很順利,但最近它自發地崩潰了。
這就是我所擁有的。
啟動.json:
化合物:
{
"name": "API-only",
"stopAll": true,
"configurations": [
"Metadata API",
"Auth API"
]
}
...以及化合物中的個人 API 配置:
{
"type": "node",
"request": "launch",
"name": "Metadata API",
"program": "${workspaceFolder}/metadata-api/bin/www",
"envFile": "${workspaceFolder}/metadata-api/.env",
"skipFiles": [
"<node_internals>/**/*.js",
"${workspaceRoot}/node_modules/**/*.js"
],
"presentation": {
"hidden": false,
"group": "apis",
"order": 1
}
},
{
"type": "node",
"request": "launch",
"name": "Auth API",
"program": "${workspaceFolder}/auth-api/bin/www",
"envFile": "${workspaceFolder}/auth-api/.env",
"skipFiles": [
"<node_internals>/**/*.js",
"${workspaceRoot}/node_modules/**/*.js"
],
"preLaunchTask": "Preload Delay",
"presentation": {
"hidden": true,
"group": "",
"order": 1
}
}
您可以看到“preLaunchTask”是在 Auth API 中設置的,但不是元數據 API 中設置的。這是:
任務.json :
{
"version": "2.0.0",
"tasks": [
{
"label": "Preload Delay",
"type": "shell",
"command": "sleep 3",
"windows": {
"command": "ping 127.0.0.1 -n 3 > nul"
},
"group": "none",
"presentation": {
"reveal": "silent",
"panel": "shared",
"revealProblems": "onProblem"
}
}
]
}
我以前可以先在 VSC 調用堆棧面板中查看元數據加載,然后在 3 秒后查看身份驗證。 現在,它們都立即出現並且經常出現,Auth 失敗,因為它不再尊重等待元數據首先加載的延遲,因此它可以調用它並自行加載。
果然,如果我先手動啟動Metadata,或者手動暫停Auth等待Metadata加載,每次都有效。
這些配置在 10 多個月內都沒有改變,所以我懷疑最近的 VSC 更新必須打破這個? 還有別的辦法嗎? 我沒有找到太多關於 go 的信息。
我瀏覽了 VS Code 文檔,發現您的任務有兩個問題。json。
1-您需要為上述場景分別創建兩個不同的任務,例如
{ "version": "2.0.0", "tasks": [{ "label": "Client Build", "command": "gulp", "args": ["build"], "options": { "cwd": "${workspaceFolder}/client" } }, { "label": "Server Build", "command": "gulp", "args": ["build"], "options": { "cwd": "${workspaceFolder}/server" } }, { "label": "Build", "dependsOn": ["Client Build", "Server Build"] } ] }
2-您需要設置“dependsOrder”:“sequence”並配置依賴項,例如
{ "label": "One", "type": "shell", "command": "echo Hello ", "dependsOrder": "sequence", "dependsOn": ["Two", "Three"] }
了解有關復合任務的更多信息? 祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.