使用 TS 的路径映射调试 Nest App

Ale*_*ora 5 node.js typescript visual-studio-code nestjs

我正在尝试调试一个 typescript-node 应用程序(通过 nestjs)但是因为我包含了 Typescript 的路径映射 ->

https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping

它不再起作用,它会引发此错误

在此处输入图片说明

调试配置文件如下所示:

在此处输入图片说明

TSCONFIG文件看起来是这样的:

在此处输入图片说明

只是提到该应用程序运行良好,测试通过正常,一切都按预期工作,除非我按播放键调试应用程序。

解决方法是将这些路径替换为要导入的相对正常路径,但这意味着摆脱 TS 带来的路径映射功能,这是我的最后一次尝试。

Ale*_*ora 4

我得到了这个问题的解决方案。我将详细说明这些步骤,以防对其他人有所帮助。

当向项目添加路径映射时,您有机会使用更短且绝对的模块路径,这有一些优点/缺点,但通常我认为在使用模块时它很棒。

当以与在开发模式下工作不同的方式测试、调试或运行应用程序时,可能会出现问题。

因此使用jest,您需要添加:

"jest": {
    "moduleFileExtensions": [ ... ],
    "moduleNameMapper": {
      "@db/(.*)": "<rootDir>/core/database/$1",
      "@exceptions/(.*)": "<rootDir>/core/exceptions/$1",
      "@permissions/(.*)": "<rootDir>/permissions/$1",
      "@roles/(.*)": "<rootDir>/roles/$1",
      "@users/(.*)": "<rootDir>/users/$1",
      "@videos/(.*)": "<rootDir>/videos/$1"
    },
    "rootDir": "src",
    ...
Run Code Online (Sandbox Code Playgroud)

然后为了调试,我需要执行以下步骤:

1)更新vscode中的launch.json:

        {
            "type": "node",
            "request": "launch",
            "name": "Nest Debug",
            "runtimeExecutable": "npm",
            "runtimeArgs": [
                "run-script",
                "debug"
            ],
            "port": 9229
        },
Run Code Online (Sandbox Code Playgroud)

2)更新package.json脚本添加:

"debug": "nodemon --config nodemon-debug.json",
Run Code Online (Sandbox Code Playgroud)

3) 安装 tsconfig-paths - (npm install --save-dev tsconfig-paths)

https://github.com/dividab/tsconfig-paths

4)创建/更新nodemon-debug.json文件:

{
  "watch": [
    "src"
  ],
  "ext": "ts",
  "ignore": [
    "src/**/*.spec.ts"
  ],
  "exec": "node --inspect-brk -r ts-node/register -r tsconfig-paths/register src/main.ts"
}
Run Code Online (Sandbox Code Playgroud)

注意这一行

节点 --inspect-brk -r ts-node/register -r tsconfig-paths/register src/main.ts

与nodemon.json的区别是:

  • Nodemon.json: "exec": "ts-node -r tsconfig-paths/register src/main.ts"
  • Nodemon-debug.json: "exec": "ts-node -r tsconfig-paths/register -r tsconfig-paths/register src/main.ts"