Gib*_*bor 11 node.js vscode-debugger
所以我在 node.js 中构建了一个脚本,它应该接收 csv 文件,解析它们并将它们输入到数据库中。有时,当我调试我的代码时,它会像在 async_hooks.js 文件中找到的不可见断点一样停止,位于“emitHookFactory”函数的第一行(第 163 行)。
调用堆栈仅说明同一文件上的一个调用 - “emitBeforeNative”。
我在试验中注意到了一些事情:
我有 3 种类型的文件需要解析并放入数据库。它仅发生在一种文件类型上,该文件类型非常大(csv 上为 3.1m~ 行,而其他文件类型为 50~200K 行)。我试图部分加载它 - 只有开始的 20K 行(将它们复制到一个新文件,代码没有更改)并且它没有中断。这意味着大小与调试器停止有关?
我试图用其他方式重现它,但没有成功。此外,它并不总是发生(即使在同一个文件上运行) - 但像 80-85% 的时间。
我的脚本是这样的:查询 DB 和 AWS 以查找新文件 > 将文件下载到本地 > 从本地流式传输文件 > 在line事件解析行上执行数据操作 > 在end事件上 - 遍历所有操作的数据,构建查询和查询插入它的数据库。我在关键位置放置了几个断点,并发现断点 SEEMS 发生在发出line事件中间的某个地方。回调函数是一个普通的函数,不是async,里面也没有async操作。事实上,里面只有数组和字符串操作操作——甚至没有第三方操作或任何不寻常的操作。
我试图在互联网上寻找解决方案。没有找到任何明确的方法来完全摆脱它,只有我不太理解的解决方法(对 JS 环境有点陌生,所以我无法理解如何禁用或忽略它的概念......)
感谢您在高级方面的帮助。
基于https://github.com/nodejs/node/issues/15464
有一种方法可以忽略进入 Node 的胆量。在您的launch.json 中添加以下skipFiles指令:
"skipFiles": [
"<node_internals>/**"
]
Run Code Online (Sandbox Code Playgroud)
或者你可以特别忽略/internal/async_hooks这个:
"skipFiles": [
"<node_internals>/internal/async_hooks.js",
"<node_internals>/internal/inspector_async_hook.js"
]
Run Code Online (Sandbox Code Playgroud)
毕竟,您的配置可能如下所示:
{
"version": "0.2.0",
"configurations": [
{
"type": "pwa-node",
"request": "launch",
"name": "Debug",
"runtimeExecutable": "<your executable path>",
"console": "integratedTerminal",
"cwd": "${workspaceFolder}",
"timeout": 30000,
"skipFiles": [
"<node_internals>/**"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这也可能与已知的 NodeJS 错误有关:https : //github.com/nodejs/node/issues/36022
And*_*and -1
您能否尝试一下我们新的 JavaScript 调试器是否仍然存在此问题。有关详细信息,请参阅 VS Code 1.42 的发行说明:https://code.visualstudio.com/updates/v1_42#_new-javascript-debugger。
| 归档时间: |
|
| 查看次数: |
2026 次 |
| 最近记录: |