gpt4 book ai didi

node.js - VSCode 在调试 node.js 脚本时在 "async_hooks.js"上的不可见断点处停止

转载 作者:行者123 更新时间:2023-12-03 12:10:38 25 4
gpt4 key购买 nike

所以我在 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>/**"
    ]
    或者你可以特别忽略 /internal/async_hooks有了这个:
    "skipFiles": [
    "<node_internals>/internal/async_hooks.js",
    "<node_internals>/internal/inspector_async_hook.js"
    ]
    毕竟,您的配置可能如下所示:
    {
    "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>/**"
    ]
    }
    ]
    }

    这也可能与一个已知的 NodeJS 错误有关: https://github.com/nodejs/node/issues/36022

    关于node.js - VSCode 在调试 node.js 脚本时在 "async_hooks.js"上的不可见断点处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57357498/

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