迁移到仅 esm 包使用后,Visual Studio Code 调试器停止工作

问题描述 投票:0回答:1

问题

当我们使用最新的仅 esm 包移动代码时,我的 Visual Studio 代码调试器就停止工作。在我们对 .swcrc 和 typescript 配置进行更改后,调试器会抛出错误 无法获取 node_modules 路径

设置

我的调试器设置(launch.json 的一部分)如下

{
      "name": "run api tests",
      "request": "launch",
      "type": "node",
      "skipFiles": ["<node_internals>/"],
      "program": "${workspaceFolder}/apps/api/node_modules/jest/bin/jest.js",
      "envFile": "${workspaceFolder}/apps/api/.env.test",
      "args": ["--config", "./apps/api/jest-api.config.mjs"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen"
}

jest-api.config.mjs
中的设置应该是无关紧要的,因为它只从我们的node_modules运行jest。

.swcrc

{
  "$schema": "https://json.schemastore.org/swcrc",
  "module": {
    "type": "commonjs"
  },
  "jsc": {
    "parser": {
      "syntax": "typescript",
      "dynamicImport": true,
      "tsx": false,
      "decorators": false
    },
    "experimental": {
      "plugins": [["swc_mut_cjs_exports", {}]]
    },
    "transform": { "legacyDecorator": true, "decoratorMetadata": false, "useDefineForClassFields": false },
    "target": "es2020",
    "externalHelpers": true,
    "baseUrl": "."
  },
  "sourceMaps": true
}

tsconfig.json

{
  "$schema": "https://json.schemastore.org/tsconfig",
  "compileOnSave": true,
  "compilerOptions": {
    "rootDir": "./src",
    "outDir": "dist",
    "module": "commonjs",
    "target": "ES2020",
    "moduleResolution": "node",
    "forceConsistentCasingInFileNames": true,
    "sourceMap": true,
    "allowJs": true,
    "resolveJsonModule": true,
    "removeComments": true,
    "alwaysStrict": true,
    "strictNullChecks": true,
    "allowSyntheticDefaultImports": true, 
    "esModuleInterop": true,
    "lib": ["es2020"],
    "skipLibCheck": true,
    "declaration": true,
    "declarationMap": true,
    "importsNotUsedAsValues": "error",
    "ignoreDeprecations": "5.0",
    "importHelpers": true,
    "isolatedModules": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "storage", "package.json", "test_assets"],
  "files": ["src/types.ts"],
  "ts-node": {
    "files": true
  }
}

错误信息

● Test suite failed to run

failed to get the node_modules path

  at Compiler.transformSync (../../node_modules/.pnpm/@[email protected]_@[email protected]/node_modules/@swc/core/index.js:244:29)
  at transformSync (../../node_modules/.pnpm/@[email protected]_@[email protected]/node_modules/@swc/core/index.js:351:21)
  at Object.process (../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected]_/node_modules/@swc/jest/index.js:73:45)
  at ScriptTransformer.transformSource (../../node_modules/.pnpm/@[email protected]/node_modules/@jest/transform/build/ScriptTransformer.js:545:31)
  at ScriptTransformer._transformAndBuildScript (../../node_modules/.pnpm/@[email protected]/node_modules/@jest/transform/build/ScriptTransformer.js:674:40)
  at ScriptTransformer.transform (../../node_modules/.pnpm/@[email protected]/node_modules/@jest/transform/build/ScriptTransformer.js:726:19)`

辅助信息

我们使用 pnpm 来管理同一文件夹中的多个存储库。这在迁移之前也有效。难道现在我必须指定在哪里找到正确的node_modules?!我给出了 jest 二进制文件的正确路径,因此它应该可以工作。

typescript es6-modules ts-jest
1个回答
0
投票

对我来说安装

@swc/plugin-transform-imports
解决了问题:

npm i @swc/plugin-transform-imports
© www.soinside.com 2019 - 2024. All rights reserved.