簡體   English   中英

如何在 VS 代碼中使用 tasks.json 正確延遲節點/Express API 的加載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM