VSC调试器引发SyntaxError:无法在模块外部使用import语句



在最近更新Visual Studio代码之前,我能够使用此launch.json配置调试用TypeScript编写的Node.js应用程序

{
// 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": [
{
"type": "node",
"request": "launch",
"name": "Debug API",
"protocol": "inspector",
"program": "${workspaceFolder}/apps/api/src/main.ts",
"outFiles": ["${workspaceFolder}/dist/apps/api/main.js"],
"sourceMaps": true
}
]
}

但现在我得到这个错误

import * as express from 'express';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1054:16)
at Module._compile (internal/modules/cjs/loader.js:1102:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
at internal/main/run_main_module.js:17:47
Process exited with code 1

你知道我该怎么解决这个问题吗?或者至少在VSC团队在他们的GitHub上提供答案时让它发挥作用https://github.com/microsoft/vscode/issues/102834

您可以执行以下操作:

  1. package.json中添加(如果不存在(一个构建步骤,类似这样;

    "ci-build": "npx tsc",
    
  2. 我在tsconfig.json中有以下选项;

    "compilerOptions": {
    "outDir": "dist",
    "rootDir": "src",
    "module": "commonjs"
    "sourceMap": true,
    "lib": ["esnext", "dom"],
    "strict": true,
    "esModuleInterop": true,
    "target": "es2017"
    }
    

    注意:确保将sourceMap设置为true

  3. 我的launch.json是这样的;

    {
    "type": "node",
    "request": "launch",
    "name": "Build Project",
    "program": "${workspaceFolder}/src/index.ts",
    "preLaunchTask": "npm: ci-build",
    "sourceMaps": true,
    "smartStep": true,
    "internalConsoleOptions": "openOnSessionStart",
    "outFiles": ["${workspaceFolder}/dist/**/*.js"]
    }
    

如需进一步阅读,请参阅我关于主题的博客文章

根据对此github问题的评论,VSC团队已经为Visual Studio代码1.48版本提供了修复程序:

{
"type": "node",
"request": "launch",
"name": "Debug launcher",
"protocol": "inspector",
"program": "${workspaceFolder}/apps/launcher/src/main.ts",
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"sourceMaps": true
}

尝试添加"runtimeArgs";launch.json文件的属性:

{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\src\server.ts",
"runtimeArgs": ["-r", "ts-node/register", "-r", "tsconfig-paths/register"],
"console": "integratedTerminal",
"outFiles": [
"${workspaceFolder}/**/*.js"
]
}
]

}

我希望这一切对你有所帮助,因为它帮助了我

最新更新