【问题标题】:Running npm test in a debug terminal in VSCode在 VSCode 的调试终端中运行 npm test
【发布时间】:2022-01-02 06:42:27
【问题描述】:

我正在尝试在我的 launch.json 中创建一个配置,它将在 .js 文件所在的文件夹中运行 npm test。在终端中手动运行npm test 工作正常,从我的package.jsonscripts 部分获取相关命令:

"scripts": {
    "start": "node --experimental-json-modules nodeserver.js",
    "test": "export MY_VAR=abc && node --experimental-json-modules nodeserver.js"
},

特别是,当直接在终端中运行npm test 时,test 脚本行中指定的环境变量生效,--experimental-json-modules 标志被传递给node

这是我的 launch.json:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "command": "npm test",
            "name": "Run npm test",
            "request": "launch",
            "type": "node-terminal"
        }
    ]
}

这与编辑器中建议的预定义选项之一非常相似,与this 非常相似。

但是当我在 nodeserver.js 文件上运行此配置时,我得到:

它似乎在运行node 而没有我在配置中指定的标志?我对这个 launch.json 方案的工作原理有什么误解?

编辑我玩得越多,配置似乎就被完全忽略了,因此它使用默认的 node.js 配置...我正在从下拉菜单中选择配置-向下并按下播放图标:

这应该有效吗?

除了在终端中运行npm start,唯一的“自动”方法是打开package.json并点击scripts标签旁边的调试小按钮:

但我想弄清楚如何正确使用launch.json,以便我可以通过它传递环境变量等。

【问题讨论】:

    标签: node.js debugging npm visual-studio-code


    【解决方案1】:

    launch.json

    {
        "version": "0.2.0",
        "configurations": [
            {
                "type": "pwa-node",
                "request": "launch",
                "name": "Launch Program",
                "skipFiles": [
                    "<node_internals>/**"
                ],
                "program": "${workspaceFolder}\\index.js"
            },
            {
                "type": "pwa-node",
                "request": "launch",
                "name": "Run Test",
                "skipFiles": 
                [
                    "<node_internals>/**"
                ],
    
                // You can specify enviorment variables per config here
                // using key value pairs
                "env": 
                {
                    "test_variable": "test value"
                },
    
                // You can also specify a .env file that contains them
                "envFile": "${workspaceFolder}/.env",
    
                // Here you specify the file you want launched
                "program": "${workspaceFolder}\\test.js",
    
                // add args to nodejs here
                "runtimeArgs": 
                [
                    "--experimental-json-modules"
                ],
            }
        ]
    }
    

    供参考: https://code.visualstudio.com/docs/nodejs/nodejs-debugging

    【讨论】:

    • 这个launch.json 也发生了同样的情况......似乎配置(包括--experimental-json-modules arg)只是被完全忽略了,因此它使用的是默认节点。 js 启动配置,没有任何参数。也许我只是错误地启动了这个......你是怎么做到的?我这样做的方式是在原始帖子中。
    • @drmrbrewer 我选择配置文件,然后按 F5。我刚刚对那个开关进行了测试,它起作用了。 i.imgur.com/CiRXX6X.png
    • 是的。 F5 相当于我正在做的事情...按下配置文件名称旁边的“播放”按钮...仍然出现相同的错误,并且指定的运行时参数被完全忽略...不知道发生了什么.
    【解决方案2】:

    您可以尝试直接在您的 launch.json 中创建 npm 测试脚本,如上:

    {
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Run npm test",
            "request": "launch",
            "type": "node",
            "args": ["--experimental-json-modules", "${workspaceFolder}/nodeserver"],
            "env": {
               "MY_VAR": "abc"
            }
    
        }
    ]
    }
    

    【讨论】:

    • 这个launch.json也发生了同样的情况......似乎配置被完全忽略了,所以它使用默认的node.js启动配置。
    猜你喜欢
    • 2019-05-01
    • 1970-01-01
    • 2021-12-23
    • 2021-07-09
    • 2020-12-21
    • 2021-10-30
    • 2021-12-16
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多