gpt4 book ai didi

node.js - 通过 TS 使用路径映射调试 Nest App

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:00 26 4
gpt4 key购买 nike

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

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

它不再工作了,它抛出这个错误:

enter image description here

调试配置文件如下所示:

enter image description here

TSCONFIG 文件 如下所示:

enter image description here

只是提一下,该应用程序运行良好,测试顺利通过,一切都按预期工作,除了我按下播放调试应用程序时。

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

最佳答案

我找到了解决方案。我将详细说明这些步骤,以防对其他人有帮助。

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

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

所以使用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",
...

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

1)更新vscode中的launch.json:

        {
"type": "node",
"request": "launch",
"name": "Nest Debug",
"runtimeExecutable": "npm",
"runtimeArgs": [
"run-script",
"debug"
],
"port": 9229
},

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

"debug": "nodemon --config nodemon-debug.json",

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"
}

注意这一行

node --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 "

关于node.js - 通过 TS 使用路径映射调试 Nest App,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51574878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com