gpt4 book ai didi

javascript - 当我不是node.exe的调用者时,如何在Windows上的nodejs中调试javascript

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:56 26 4
gpt4 key购买 nike

我正在尝试调试nodejs脚本(在Windows上)。我发现我可以使用“调试器”在脚本中停止执行/设置断点陈述。然而,这似乎只有在 node.exe 调用为:

时才起作用:
node debug myscript.js

问题是我不是调用node.exe的人,所以我无法传递调试参数。实际上,node.exe 在 myscript.js 之前被调用了很多次。 myscript.js 又被其他一些 js 调用。直接运行 myscript.js(在 other.js 之外)不起作用。

有没有办法等待调试器附加?

如果可能,解决方案应该使用一些 GUI 调试器(例如 npm node-inspector)。

更新1:

要等待应用程序中的调试器,请使用:

npm install sleep           # install locally, not global

将代码添加到 myscript.js:

var sleep = require('sleep'); 

...
var done = 1;
while ( done != 1 ) {
console.log("PID=" + process.pid);
sleep(1);
}
...

运行您的脚本(即启动触发其执行的任何内容):

PID=3280
PID=3280

启动 Node 检查器:

C:\Users\Samo>node-inspector
Node Inspector v0.12.7
Visit http://127.0.0.1:8080/?port=5858 to start debugging.

打开一个新的cmd.exe并运行:

C:\Users\Samo>tasklist /FI "IMAGENAME eq node.exe"

Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
node.exe 3944 Console 1 64,016 K
node.exe 3280 Console 1 119,276 K

来自同一 cmd.exe 问题:

node -e "process._debugProcess(3280)"

在调试脚本的输出中,您应该看到:

PID=3280
Starting debugger agent.
Debugger listening on port 5858

现在使用 Chrome(不是 Firefox,而是 Chrome)访问指定的 URL ( http://127.0.0.1:8080/?port=5858 )。您现在应该能够进行调试。

我说应该是因为在我的情况下它不起作用。如果我将 _debugProcess 发送到 3280(我的 myscript.js),什么也不会发生。但是,如果我将 _debugProcess 发送到 3944,我会得到“正在启动调试器代理”。信息。 为什么?

最佳答案

如果您有典型的 Windows 工作区,例如 NodegitVSCode
您可以通过以下简单的步骤来完成:

  1. 在 VSCode 中,打开 launch.json 配置或通过单击滚轮创建新配置
    (这是调试 View CtrlShiftD)

enter image description here

  • Node 将监听端口 9229 by default ,因此添加此配置:
  • {
    "type": "node",
    "request": "attach",
    "name": "Attach to 9229",
    "port": 9229
    },
  • 打开任务管理器并找到 Node 进程的 PID
    我可以通过 index.js 所在的 "build" 文件夹来识别我的。 enter image description here
  • 打开另一个 cmdgit-bash 并运行此命令,
    其中 21392 是您的进程的 PID。
  • node -e "process._debugProcess(21392)"
  • 你应该看到这个 Debugger listening on ws:9229
  • 从 VSCode 开始调试附加到 9229
    enter image description here
  • 现在一切都应该准备好了。

    关于javascript - 当我不是node.exe的调用者时,如何在Windows上的nodejs中调试javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35735020/

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