首页 > 解决方案 > 在非节点运行时在 VSCode 中调试 JavaScript 匿名块

问题描述

我有一个具有 javascript 运行时的应用程序,它希望在其中运行一些代码片段。我正在尝试调试和设置断点,但我无法做到。作为参考,它在引擎盖下使用 deno。

我可以将此应用程序配置为自动中断,这是我可以设法调试它的唯一方法(因为我可以逐行进行,直到我想要检查的点)。我相信问题出在地图上,但我不知道如何让它映射正在使用我拥有的脚本执行的匿名代码。

这是我运行的示例脚本。

async (workflow_id, task_id, config, input) => {
    console.log(input);
    console.log(config);
    console.log(task_id);
    console.log(workflow_id);
    return {
        "ok": {
            "message": `hello ${input.name}`
        }
    };
}

生成并执行这样的匿名块:

Deno.core.ops();
(async function(){
    let input = {"name":"Augusto"};
    let config = null;
    let func = async (workflow_id, task_id, config, input) => { // -------> here my code is appended
        console.log(input);
        console.log(config);
        console.log(task_id);
        console.log(workflow_id);
        return {
            "ok": {
                "message": `hello ${input.name}`
            }
        };
    };
    let result = await func(0, 0, config, input);
    let message = {
        workflow_id: 0,
        task_id: 0,
        output: result
    };
    console.log(message);
})();

当我最终一行一行地访问时,我可以访问我的应用程序生成的匿名代码,但问题是 vscode 没有将它链接到我的项目中的脚本,因此无法识别我在其中设置的任何断点。

有没有办法让 vscode 识别这个匿名函数并将其映射到我的本地脚本文件?

这是我配置的方式launch.json

{
    "version": "0.2.0",
    "configurations": [
      {
        "name": "Debug WM Script",
        "type": "pwa-node",
        "request": "launch",
        "cwd": "${workspaceFolder}",
        "runtimeExecutable": "${workspaceFolder}/target/debug/debugger",
        "runtimeArgs": [
          "-f",
          "./test.json",
          "-s",
          "./test.js"   // ------------> this is my local script file I wanted to debug
        ],
        "attachSimplePort": 9229,
        "outputCapture": "std",
        "sourceMaps": true,
        "resolveSourceMapLocations": [
            "${workspaceFolder}/**",
        ],
        "outFiles": [
            "${workspaceFolder}/*.js"
        ]
      }
    ]
  }

您可以在下图中看到 vscode 如何显示我的匿名代码。

vscode 预览

标签: javascriptdebuggingvisual-studio-code

解决方案


推荐阅读