在 VSCode 的 NodeJs 调试器中使用“esm”

ple*_*hat 7 javascript node.js ecmascript-6 visual-studio-code

我正在使用 Vscode。

我有一个 js 文件,里面有十几个类定义,我想在另一个 jsfile 中可用。所以我在另一个文件 main.js 中使用了 es6 导入

//main.js
import * as Helper from './helperClasses.js';
var myDoggy = new Helper.Pet("Fido");
Run Code Online (Sandbox Code Playgroud)

但这不会在 node 上运行,所以我用 npm 安装了“esm”,并创建了一个名为 server.js 的文件,我在其中添加了

//server.js
require = require("esm")(module/*, options*/)
module.exports = require("./main.js")
Run Code Online (Sandbox Code Playgroud)

现在它与代码运行器扩展一起运行,或者从带有“-r esm”参数的 cmd 窗口运行(即node -r esm server.js)。但是在 vsCode 调试器中,我收到以下错误:

import * as helper from './helperClasses.js';
       ^

SyntaxError: Unexpected token *

Run Code Online (Sandbox Code Playgroud)

我尝试按如下方式更改 launch.json 中的配置设置,但这不起作用:

"configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceFolder}\\game.js",
            "args": ["-r","esm","server.js"]
        }
    ]
Run Code Online (Sandbox Code Playgroud)

我去将 .js 扩展名更改为 .mjs,但随后智能感知停止工作......

有什么我想念的吗?这是我第一次尝试使用 Node,我只是想轻松地导入一些辅助函数。

Dav*_*ner 26

我对接受的答案有疑问。使用runtimeArgs效果更好:

    "configurations": [
        {
            "type": "node",
            "name": "import-test-files",
            "request": "launch",
            "cwd": "${workspaceFolder}",
            "program": "${workspaceFolder}/scripts/import-test-files.js",
            "runtimeArgs": ["-r", "esm"]
        }
    ]
Run Code Online (Sandbox Code Playgroud)


小智 0

你的 launch.json 必须是

"configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${workspaceFolder}\\server.js",
        "args": ["-r","esm"]
    }
]
Run Code Online (Sandbox Code Playgroud)

不过,server.js 的路径必须准确。例如,如果它位于文件夹“app”下,请使其 "program": "${workspaceFolder}\\app\\server.js"

让我们知道它是否有帮助或者问题是否仍然存在。