typescript断点调试,用chatGpt也走了不少弯路,最终换了思路才成功

如题,刚开始搜索了一圈,各种方法尝试了都不行,如:

一、不行的探索,各种坑

  1. tsc -b -w tsconfig.json 监听变化,以为必须先编译为js才可以打断点。
  2. vscode装了typescript debugger插件,并且建立配置(launch.json中添加配置: 选 TS Debug),自动生成了配置文件。然后debug的时候总是报错:TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension “.ts” for /…/src/index.ts 查了都说可能没有安装ts-node,但是我安装过,算了重新安装一次,还是不行。。。。
  3. 最源头去搜索 vscode如何调试.ts文件。 基本步骤都是安装插件,然后运行以下命令来生成默认的 tsconfig.json 文件:tsc --init;
    配置 launch.json 文件的 “program” 字段;
    。。。 也都不行。
  4. 在搜索:vscode的launch.json要怎么设置才能断点调试ts文件
    得到这个配置还是不行:
"configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Debug TypeScript",
      "runtimeArgs": ["-r", "ts-node/register"],
      "args": ["${workspaceFolder}/path/to/your/file.ts"],
      "cwd": "${workspaceFolder}",
      "sourceMaps": true,
      "protocol": "inspector"
    }
  ]

name:配置的名称,您可以根据需要进行更改。
runtimeArgs:指定运行时参数,此处使用 -r ts-node/register 来使用 ts-node 运行 TypeScript 文件。
args:指定要运行的 TypeScript 文件的路径,根据您的项目结构进行相应调整。
cwd:指定工作目录,这里使用 ${workspaceFolder} 表示当前工作区的根目录。
sourceMaps:启用源映射以进行断点调试。
protocol:选择使用 Inspector 协议。

  1. gpt中各种问也基本来回这几个答案了。

二、成功的方法

  1. 前提:npm run dev是可以跑起来项目的
  2. 那么我问自己一个问题:为啥它能跑起来? 我是不是可以在这个基础上叠加调试?
  3. 于是我问gpt,dev中的这个命令是啥意思:

node --loader ts-node/esm --inspect ./src/index.ts的意思

gtp答:

它是一个命令行命令,用于在 Node.js 环境中以调试模式运行 TypeScript 文件。

解析这个命令的含义如下:

node: 运行 Node.js 进程的命令。
--loader ts-node/esm: 指定了一个自定义的加载器,ts-node/esm 是指使用了 TypeScript 的 ts-node 模块的 ES 模块加载器。
--inspect: 启用了 Node.js 的调试模式,允许通过调试器连接到运行中的进程。
./src/index.ts: 要运行的 TypeScript 文件的路径,这里假设是位于 ./src 目录下的 index.ts 文件。
通过运行该命令,您可以在调试模式下执行指定的 TypeScript 文件,并使用调试器进行调试操作,例如设置断点、查看变量值等。请确保您已经安装了相应的依赖(例如 ts-node 模块)并正确配置了调试器(例如在 VS Code 中配置 launch.json),以便成功进行调试操作。

最后一句是提示我灵感的关键:“正确配置了调试器(例如在 VS Code 中配置 launch.json),以便成功进行调试操作

于是我再问gpt:

这个要如何配置对应调试器才能断点调试src/index.ts?
gpt答:(这次的配置终于可以了)
要在 VS Code 中配置对应调试器以实现断点调试 src/index.ts 文件,您可以按照以下步骤进行设置:

打开 VS Code,并在顶部菜单栏中选择 “调试”(Debug)选项。

在侧边栏中选择 “添加配置”(Add Configuration),或者打开 .vscode/launch.json 文件(如果已存在)。

在 launch.json 文件中添加一个调试配置。如果 launch.json 文件不存在,则可以使用以下配置作为示例创建该文件:

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Debug TypeScript",
      "runtimeArgs": [
        "--nolazy",
        "--loader",
        "ts-node/esm",
        "${workspaceFolder}/src/index.ts"
      ],
      "sourceMaps": true,
      "cwd": "${workspaceFolder}",
      "protocol": "inspector"
    }
  ]
}

总结

  1. 换着方式问gpt,它也已经反反复复的回答差不多的内容了,这时可以考虑换思路了。并且关键一点是进一步学习一点知识,并用对比思维提问自己:如上面的可以dev运行跑起项目,断点调试却不行,那么就可以了解一下为什么dev行 我本来还想着了解完再看怎么结合调试配置的(就像以前调试nodejs时那样),但gpt给的解释已经足以启发我找到跟dev对应的调试配置了,于是我按它给我的话提炼丢回去给它,并得到我想要的结论。
  2. 之前的那些配置如ts-node/register 没有抓住重点,应该用–nolazy结合ts-node/esm

你可能感兴趣的:(前端,typescript,chatgpt,javascript)