【问题标题】:Using "esm" in VSCode's NodeJs Debugger在 VSCode 的 NodeJs 调试器中使用“esm”
【发布时间】:2019-08-02 05:08:56
【问题描述】:

我正在使用 Vscode。

我有一个包含十几个类定义的 js 文件,我希望这些定义可以在另一个 js 文件中使用。 所以我在我的另一个文件 main.js 中使用了 es6 导入

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

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

//server.js
require = require("esm")(module/*, options*/)
module.exports = require("./main.js")

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

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

SyntaxError: Unexpected token *

我尝试如下更改 launch.json 中的配置设置,但没有奏效:

"configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceFolder}\\game.js",
            "args": ["-r","esm","server.js"]
        }
    ]

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

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

【问题讨论】:

    标签: javascript node.js ecmascript-6 visual-studio-code


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你的 launch.json 必须是

      "configurations": [
          {
              "type": "node",
              "request": "launch",
              "name": "Launch Program",
              "program": "${workspaceFolder}\\server.js",
              "args": ["-r","esm"]
          }
      ]
      

      server.js 的路径必须准确。例如,如果它在文件夹“app”下 "program": "${workspaceFolder}\\app\\server.js"

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

      【讨论】:

      • 不起作用:import express from 'express';SyntaxError: Unexpected identifier
      • David Figaterner 的回答在下面有效,但这个无效。
      【解决方案3】:

      这对我有用:

      "configurations": [
          {
            "type": "pwa-node",
            "request": "launch",
            "name": "Launch Program",
            "skipFiles": [
              "<node_internals>/**"
            ],
            "program": "${workspaceFolder}\\index.js",
            "runtimeArgs": ["--experimental-modules"]
          }
        ]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-15
        • 2017-12-18
        • 1970-01-01
        • 2017-06-16
        • 2020-10-24
        • 1970-01-01
        • 2019-05-06
        • 1970-01-01
        相关资源
        最近更新 更多