如何在 Typescript/Node.js 项目中使用 VS Code 调试器单步调试库代码?

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

我有一个用 Typescript 编写的 Node.js 项目,具有以下依赖项:

  "dependencies": {
    ...
    "@uniswap/smart-order-router": "^2.5.15",

从这个库包中,我在项目中导入了一些东西:

import { AlphaRouter, ... } from '@uniswap/smart-order-router'

然后像这样使用它:

const routeToRatioResponse: SwapToRatioResponse = await router.routeToRatio(
token0Balance,
token1Balance,
p,
{
  ratioErrorTolerance: new Fraction(5, 100),
  maxIterations: 1,
},
{
   swapOptions: {
     recipient: wallet.address,
     slippageTolerance: new Percent(5, 100),
     deadline: deadlineValue
   },
   addLiquidityOptions: {
     recipient: wallet.address
   }
 }
)

我在上面的第一行调用

router.routeToRatio()
时设置了一个断点。使用 VS Code 调试器时,执行会在该行正确停止。但是,当我单击“单步执行”时,我根本不会单步执行该函数,而是转到整个函数调用后的行。

该库项目是用 Typescript 编写的。代码在这里:https://github.com/Uniswap/smart-order-router。请注意,它的

tsconfig.json
此处的
inlineSourceMap
为 true:https://github.com/Uniswap/smart-order-router/blob/main/tsconfig.json#L9.

我的

node_modules
目录中似乎没有库项目的 TS 源。当我按住 Ctrl 键并单击函数名称时,VS Code 会将我带到
./node_modules/@uniswap/smart-order-router/build/main/src/routers/alpha-router/alpha-router.d.ts
(没有实现代码,只有类声明),而不是名为
alpha-router.ts
的文件。在
node_modules
下挖掘,我似乎没有该文件。

这个回答的问题提到库项目应该在

sourceRoot
中设置
tsconfig.json
,但事实并非如此。不过,我不拥有该图书馆项目,所以我无法更改其中的任何内容。

(编辑1)这是我的

launch.json

{
"version": "0.2.0",
"configurations": [
    {
        "name": "foo",
        "type": "node",
        "program": "${workspaceFolder}/foo/src/index.ts",
        "request": "launch",
        "skipFiles": [
            "<node_internals>/**"
        ],
        "preLaunchTask": "tsc: build - foo/tsconfig.json",
        "outFiles": [
            "${workspaceFolder}/**/*.js"
        ],
        "cwd": "${workspaceFolder}/foo"
    }
]
}

(编辑2):根据到目前为止的评论,我现在将调试感兴趣的依赖项安装为本地文件夹(在

npm install
意义上)。
package.json
看起来像这样:

"dependencies": {
    ...
    "@uniswap/smart-order-router": "file:../smart-order-router",
    ...

tsconfig.json
缺少
"allowJs"
。我必须直接在我的
package.json
中安装一些依赖项的依赖项。现在使用 tsc 构建代码不会出现错误(无需更改 TS 源中导入的任何路径),但现在调试器已完全损坏。

调试器在我的

index.ts
的第一行的断点处停止,并且会跳过一些行,但随后执行会在此处停止,没有任何错误:
node_modules/antlr4ts/index.js

VSC 中调试控制台上唯一的内容是:

/home/e/.nvm/versions/node/v14.15.4/bin/node ./node_modules/antlr4ts/index.js
node.js typescript visual-studio-code
1个回答
0
投票

这里重要的是在库中包含 typescript 源代码,并配置 launch.json 以正确解析源映射位置

这里我有一个视频解释了node_modules内的更改和调试打字稿代码

https://www.youtube.com/watch?v=YmpsFYoJzTE

© www.soinside.com 2019 - 2024. All rights reserved.