如何调试 Node.js 应用程序?

How do I debug Node.js applications?

提问人:Fabian Jakobs 提问时间:12/16/2009 最后编辑:Peter MortensenFabian Jakobs 更新时间:6/26/2023 访问量:549019

问:

如何调试 Node.js 服务器应用程序?

现在,我主要使用带有如下打印语句的警报调试

sys.puts(sys.inspect(someVariable));

必须有更好的调试方法。我知道 Google Chrome 有一个命令行调试器。此调试器是否也可用于 Node.js?

JavaScript 节点.js 调试 google-chrome-devtools

评论

3赞 Ali Davut 12/13/2013
您可以使用 Locus 进行命令行注入。
6赞 jw56578 9/20/2016
如果要使用传统的 IDE 应用程序进行调试,请使用 vscode 使用 vscode youtube.com/watch?v=egBJ0cd0GLM
4赞 Timbergus 2/15/2017
我发现这篇文章非常有趣,它对我很好用:使用 Chrome DevTools 调试 Node.js。希望它能:)
2赞 Nate Anderson 6/2/2017
“警报调试”:)
0赞 Jorge Orpinel Pérez 1/5/2020
请记住,如果要在加载时调试实际的服务器代码,则需要使用 INSTEAD OF 运行 nod。查看 stackoverflow.com/questions/59596138--inspect-brk--inspect

答:

268赞 Fabian Jakobs 3/29/2010 #1

作为 Google Chrome 开发者工具的一部分发布的 V8 调试器可用于调试 Node.js 脚本。有关其工作原理的详细说明,请参见 Node.js GitHub wiki

评论

12赞 balupton 5/20/2011
我很感兴趣,在 Paul Irish 和 Pavel 在 Google IO 上所做的演讲之后,现在可以直接将 node.js 调试到 Chrome 开发人员工具而无需 eclipse?
0赞 amateur barista 1/7/2012
+1 对我来说效果很好。在 Mac OS X 上使用全新的 Eclipse 3.x、x64 版本。安装说明也写得很好。谢谢。
0赞 Paul Verest 6/16/2013
也包含在 Nodeclipse nodeclipse.org 中(修复了一些与 Node.js 相关的错误)
0赞 rocky 5/19/2015
我进入这个舞台的是trepanjs(npmjs.com/package/trepanjs)。它具有节点调试器的所有优点,但更符合 gdb。它还具有更多功能和命令,例如语法突出显示、更广泛的在线帮助和更智能的评估。请参阅 github.com/rocky/trepanjs/wiki/Cool-things 了解它的一些很酷的功能。
1赞 zeronone 7/5/2016
该功能目前在夜间版本中可用。查看此处以获取说明:https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27#.fitvuaumt
1308赞 daralthus 10/16/2010 #2

Node-Inspector 可以挽救局面!从任何支持 WebSocket 的浏览器使用它。断点、分析器、实时编码等...这真是太棒了。

安装它:

npm install -g node-inspector

然后运行:

node-debug app.js

评论

15赞 Jonathan Dumaine 12/5/2011
Wish node-inspector 处于活动状态。分析组件需要得到一些喜爱。
15赞 Justin Warkentin 10/20/2012
不幸的是,node-inspector 不适用于最新版本的 Node.js,并且自 v0.1 以来它不支持日志记录到浏览器控制台。node-codein 只是有问题。因此,我编写了自己的模块来帮助调试,允许您将对象等转储到Web浏览器控制台。我以为它可能对其他人有用:node-monkey。此外,它适用于 Firefox 和 Chrome。
7赞 PeterT 3/22/2013
既然这是一个如此令人惊叹和流行的工具,那么原作者承认他们不再有资源来维护它这一事实肯定不会成为问题,因为开源社区可以接受它?
34赞 balupton 7/25/2013
现在检查器现在由 StrongLoop 积极维护,并再次使用最新版本 (0.3) 耶!公告在这里:blog.strongloop.com/...
28赞 ThisClark 6/4/2017
“从6.3版本开始,Node.js提供了一个基于DevTools的调试器,它主要弃用了Node Inspector,例如,请参阅这篇博文以开始使用。内置调试器由 V8/Chromium 团队直接开发,提供了某些高级功能(例如长/异步堆栈跟踪),这些功能在 Node Inspector 中难以实现。-节点检查器存储库说
97赞 JulianW 1/16/2011 #3

Node.js 版本 0.3.4+ 具有内置的调试支持。

node debug script.js

手动:http://nodejs.org/api/debugger.html

评论

1赞 Fabian Jakobs 1/16/2011
你有没有关于如何使用它的文档的链接?
2赞 JulianW 1/21/2011
我没有任何文档。刚刚更新到 v0.3.5。在代码中放置一行“debugger;”,该行将充当断点。它的工作原理类似于 ndb / gdb。执行“节点调试脚本 .js”后,键入帮助。您将看到它支持的命令。p = 打印,l = 列表...因此,您不需要输入完整的世界
2赞 Marc 9/6/2011
请注意,在Windows下它是“node.exe --debug myscript.js”,但它仍然不起作用。
6赞 benekastah 10/7/2011
您可能必须更改为不带破折号。这就是我最终让它工作的方式。令人困惑的是,做两件不同的事情。--debugdebug--debugdebug
0赞 Michael 7/12/2016
如何让程序实际运行?“r ->”,当我尝试继续并且遇到试图获取输入的语句时,它会在调试提示符下将我放回调试提示符,而不是让我输入所需的输入。app is already running...
13赞 yojimbo87 3/12/2011 #4

Node.js 中有内置的命令行调试器客户端。Cloud 9 IDE 也有相当不错的(可视化)调试器

评论

0赞 Teoman shipahi 1/8/2016
Cloud 9 对我来说是要走的路,尤其是无需携带笔记本电脑即可随时随地自由编写代码。
8赞 Baryon Lee 3/8/2012 #5

如果您需要一个强大的 Node.js 日志库,Tracer https://github.com/baryon/tracer 是更好的选择。

它输出带有时间戳、文件名、方法名称、行号、路径或调用堆栈的日志消息,支持颜色控制台,并支持数据库、文件、流传输。我是作者。

61赞 isNaN1247 5/3/2012 #6

我个人使用 JetBrains WebStorm,因为它是我发现的唯一一个非常适合前端和后端 JavaScript 的 JavaScript IDE。

它适用于多个操作系统,并内置了 Node.js调试(以及大量其他东西)[(http://www.jetbrains.com/webstorm/features/index.html)。

我唯一的“问题”/愿望清单项目

  1. Mac 上的资源需求似乎比 Windows 更耗电在版本 6 中,这似乎不再是问题。
  2. 如果它有 Snippet 支持(就像 Sublime Text 2 一样 - 即键入“fun”并点击“tab”以放入一个功能,那就太好了。请参阅下面的@WickyNilliams评论 - 使用实时模板,您还可以获得片段支持。

评论

10赞 WickyNilliams 9/26/2012
webstorm 确实有代码段支持顺便说一句 ;-)尽管它们被称为“实时模板”而不是片段。
3赞 Josh Liptzin 6/12/2014
如果您只想调试 node.js 应用程序并且已经拥有 Intellij IDEA 许可证,则只需安装 node.js 插件,而无需购买 WebStorm 许可证。安装插件后,设置运行/调试配置非常容易。
8赞 Shaheen Ghiassy 4/29/2013 #7

假设您的计算机上安装了 node-inspector(如果没有,只需键入 'npm install -g node-inspector'),您只需运行:

node-inspector & node --debug-brk scriptFileName.js

并将命令行中的 URI 粘贴到 WebKit (Chrome / Safari) 浏览器中。

评论

1赞 Dan Dascalescu 2/12/2014
已经提到了 node-inspector;也许删除这个答案?
793赞 balupton 5/13/2013 #8

调试

分析

  1. node --prof ./app.js
  2. node --prof-process ./the-generated-log-file

堆转储

火焰图

描图

伐木

输出调试信息的库

增强堆栈跟踪信息的库

标杆

其他

遗产

这些过去可以工作,但不再维护或不再适用于新式节点版本。

评论

8赞 reallynice 10/25/2013
关于 Nodetime:对于那些不想将数据发送到 Nodetime 服务器的人来说,有一个本地的“替代方案”(它仍然基于 nodetime),即模块,如 stackoverflow.com/questions/12864221/nodejs-memory-profiling 中指出的那样look
0赞 shacharz 7/20/2014
我发现 nodetime 的 cpu 报告不是很有帮助:1.我只是得到一棵方法树,没有“自我”时间。2. 似乎树枝被修剪到一定数量的百分比以下。这 2 个使得很难确定 cpu 大部分时间都花在哪里。
0赞 Stepan Yakovenko 9/8/2014
npm install -g profiler 抱怨在 Windows 7 上缺少 python。我试图设置 python=C:\Python34\,但这会导致崩溃。
0赞 Stepan Yakovenko 9/8/2014
唯一开箱即用的分析器是 nodetime。但是它的 cpu 分析堆栈跟踪不可用(它没有提供足够的细节)。Nodejs 工具 4 msvc 2012 也有分析器,但它也报告了严重的未修复错误......
0赞 Dan Abramov 1/9/2015
唯一对我有用的分析器是 + 来自 .nprofv8.lognode --prof
44赞 Sindre Sorhus 5/15/2013 #9

Theseus是Adobe研究的一个项目,它允许您在其开源编辑器Brackets中调试Node.js代码。它有一些有趣的功能,如实时代码覆盖率、追溯检查、异步调用树。

screenshot

评论

0赞 misaxi 2/19/2014
这很酷,仍然不知道 Backtrace 是什么
0赞 Eugene 7/15/2015
我目前很喜欢忒修斯,但我仍然有一些问题需要设置断点并跟踪。我目前不得不杀死我的应用程序,使用 --debug 启动节点,跟踪 trhough,然后使用 node-theseus 启动应用程序。是否可以将忒修斯与断点一起使用?我尝试在 GitHub 页面、StackOverflow 和论坛上搜索,但到目前为止没有运气。我错过了什么吗?
11赞 vhs 11/22/2013 #10

我整理了一篇关于使用节点检查器的简短 Node.js 调试入门,供那些不确定从哪里开始的人使用。

7赞 Paul Verest 1/2/2014 #11

有一个新的开源Nodeclipse项目(作为Eclipse插件或Enide Studio):

Nodeclipse在2013年Eclipse Top 10 NEW Plugins中成为#1。它使用修改后的 V8 调试器(来自 Google Chrome Developer Tools for Java)。

Nodeclipse是每个月初发布的免费开源软件。

8赞 Alex 2/5/2014 #12

为了完整起见:

PyCharm 3.0 + Node.js 插件提供了很棒的开发 + 运行 + 调试体验

2赞 Doron Segal 3/12/2014 #13

我最初的反应是几年前的视觉工作室。

因此,使用 GOOD by happy 是一个很好的日志记录包,但对于调试,请使用 Visual Studio

原始回复(很久以前): 我会使用沃尔玛实验室的 GOOD。它将完成这项工作,并且非常灵活:

var hapi = require('hapi');
var good = require('good');
var server = hapi.createServer('localhost', 5000,{});
server.route({SOME ROUTE HERE});
server.start();

var options = {
subscribers: {
    'console':               ['ops', 'request', 'log', 'error'],
    'http://localhost/logs': ['log']
    }
};
server.pack.require('good', options, function (err) {

    if (!err) {
        console.log('Plugin loaded successfully');
    }
});

评论

0赞 Shivam 12/5/2018
不适合调试。它是一个快乐的js插件,提供与快乐服务器生成的各种事件的交互。
0赞 Doron Segal 12/7/2018
@shivam你是对的,我差不多 5 年前(今天是 2018 年 12 月)写了这篇文章 如果需要调试节点应用,请将 vscode 与调试器配合使用
27赞 John81 5/2/2014 #14

适用于 Visual Studio 2012 或 2013 的 Node.js 工具包括调试器。此处的概述指出“Node.js Tools for Visual Studio 包括对调试节点应用的完整支持”。作为 Node.js 的新手,但具有 .NET 背景,我发现这个插件是调试 Node.js 应用程序的好方法。

3赞 matt burns 5/7/2014 #15
node-debug -p 8888 scriptFileName.js
17赞 Baylee 12/9/2014 #16

我创建了一个简洁的小工具,叫做pry.js,可以帮助你。

在代码的某个位置放置一个简单的语句,正常运行脚本,节点将停止当前线程,从而使您可以访问所有变量和函数。随意查看/编辑/删除它们!

var pry = require('pryjs')

class FizzBuzz

  run: ->
    for i in [1..100]
      output = ''
      eval(pry.it) // magic
      output += "Fizz" if i % 3 is 0
      output += "Buzz" if i % 5 is 0
      console.log output || i

  bar: ->
    10

fizz = new FizzBuzz()
fizz.run()
16赞 Uchiha Itachi 3/30/2015 #17

如果您使用的是 Atom IDE,则可以安装该软件包。node-debugger

3赞 Gerold Meisinger 5/15/2015 #18

使用您喜欢的浏览器调试器调试小型 Node.js 脚本的一种快速而肮脏的方法是使用 browserify。请注意,此方法不适用于任何需要本机 I/O 库的应用程序,但对于大多数小型脚本来说已经足够了。

$ npm install -g browserify

现在将所有调用移动到一个文件中并运行:var x = requires('x')requires.js

$ browserify requires.js -s window -o bundle.js

(这里的缺点是,您必须移动或注释所有文件。requires

在 HTML 文件中包含 ,如下所示:bundle.js

<script type="text/javascript" src="bundle.js"></script>

现在在浏览器中加载文件,然后按 和 viola: debug in browser。F12

24赞 Stephan Ahlf 7/19/2015 #19

我编写了一种不同的方法来调试 Node.js 代码,它稳定且非常简单。它可在 https://github.com/s-a/iron-node 获得。

在此处输入图像描述

一个开源的跨平台可视化调试器。

安装:

npm install iron-node -g;

调试:

iron-node yourscript.js;

5赞 卢声远 Shengyuan Lu 8/5/2015 #20

IntelliJ 非常适合 Node.js。

此外,IntelliJ 很好地支持“代码辅助”。

25赞 hans 9/9/2015 #21

Visual Studio Code 具有非常好的 Node.js 调试支持。它是免费的、开源的和跨平台的,可以在 Linux、OS X 和 Windows 上运行。

你甚至可以调试咕噜咕噜和吞咽任务,如果你需要的话......

评论

1赞 bgse 10/20/2015
从 Visual Studio Code 8.0 开始,对 OSX 和 Linux 的调试支持非常好。
0赞 dashambles 2/7/2016
在花了一整个晚上让 node-inspector 和 strongloop 在 Windows 下运行(Visual Studio Community、降级到 npm 2、安装 python、env 变量、使用 cmd 而不是 babun / cygwin 等)然后玩了一个小时之后,我不得不说这是最好的选择,至少在 Windows 中,而且可能在一般情况下(如果你没有 webstorn)
46赞 Philip O'Brien 9/15/2015 #22

这里有很多很好的答案,但我想补充我的观点(基于我的方法是如何演变的)

调试日志

让我们面对现实吧,我们都喜欢一个好的,有时效果很好,所以如果你不愿意离它太远,至少要用 Visionmedia 的调试在你的日志中添加一些闪光点。console.log('Uh oh, if you reached here, you better run.')

交互式调试

尽管控制台日志记录非常方便,但要进行专业调试,您需要卷起袖子并陷入困境。设置断点,单步执行代码,检查范围和变量,以查看导致这种奇怪行为的原因。正如其他人所提到的,节点检查器确实是蜜蜂的膝盖。它使用内置调试器可以完成所有操作,但使用熟悉的 Chrome DevTools 界面。 如果您像我一样使用 Webstorm,那么这里有一个方便的调试指南。

堆栈跟踪

默认情况下,我们无法跟踪事件循环(滴答周期)不同周期中的一系列操作。要解决这个问题,请查看 longjohn(但未在生产中!

内存泄漏

使用 Node.js,我们可以让服务器进程保持相当长的时间。如果您认为它出现了一些令人讨厌的泄漏,您会怎么做?使用 heapdump 和 Chrome DevTools 比较一些快照并查看更改内容。


有关一些有用的文章,请查看

如果您想观看视频,那么

无论选择哪种路径,只要确保了解调试方式即可

enter image description here

看着自己的麻烦,知道
你自己,而不是其他人,这是一件痛苦的事情

索福克勒斯,阿贾克斯

4赞 Sergey Vyacheslavovich Brunov 11/24/2015 #23

NetBeans IDE 从 8.1 版开始支持 Node.js

<...>

新功能亮点

Node.js 应用程序开发

  • 新建 Node.js 项目向导
  • 新建 Node.js Express 向导
  • 增强的 JavaScript 编辑器
  • 新增对运行 Node.js 应用程序的支持
  • 新增了对调试 Node.js 应用程序的支持。

<...>

其他参考资料:

  1. NetBeans Wiki / NewAndNoteworthyNB81
  2. NetBeans IDE、geertjan-oracle 中的 Node.js Express 应用程序
77赞 Shreyas 2/19/2016 #24

Visual Studio Code 将是我进行调试的选择。没有安装任何工具或东西的开销。 只需在 package.json 中设置应用的起点,VSCode 就会在解决方案中自动创建一个配置文件。它建立在 Electron 之上,像 Atom 这样的编辑器就是建立在 Electron 之上的。npm install

VS Code 提供与你可能拥有的类似的调试体验 在其他 IDE 中,如 VS、Eclipse 等。

enter image description here enter image description here

评论

0赞 calbertts 5/25/2017
这很酷,但它有滞后。这就是为什么我更喜欢 Sublime。
3赞 Syed Faizan 10/27/2017
但是 sublime 没有调试器,我认为 VS 代码也很快
1赞 elboletaire 3/19/2018
自 5 年前以来,我就拥有了崇高的许可证。从几个月前开始,我什至没有安装 Sublime Text,只是 vscode。开箱即用有很多我在 Sublime 中想念的工具(比如集成终端..)。
0赞 carkod 6/18/2018
总是要求我提供配置文件夹,它不能开箱即用
0赞 Vipul Dessai 12/25/2019
@carkod启用 vs code 自动附加首选项并使用 vs code 终端启动脚本,例如 node --inspect file-name.js
9赞 OneMoreQuestion 7/26/2016 #25

使用 Webstorm!它非常适合调试 Node.js 应用程序。它有一个内置的调试器。在此处查看文档:https://www.jetbrains.com/help/webstorm/2016.1/running-and-debugging-node-js.html

213赞 Alister 9/14/2016 #26

从 6.3 版开始,Node 有自己的内置 GUI 调试器(使用 Chrome 的 DevTools)

Nodes builtin GUI debugger

只需传递检查器标志,就会向检查器提供一个 URL:

node --inspect server.js

您也可以通过传递来中断第一行。--inspect-brk

评论

2赞 Jarid R. Margolin 11/18/2016
不要打折上述步骤,而只是为了分享......我试图创建一个更健壮、更易于安装的包装器。请参见:github.com/jaridmargolin/inspect-process
1赞 gregers 12/13/2016
@JaridR.马戈林尼斯。我更新了答案以使用它。设置起来更容易,效果更好:)
2赞 LOAS 1/2/2017
这个答案目前在底部,它是唯一一个真正对我有用的答案。这真是太棒了!
3赞 RoccoB 3/24/2017
为了防止对任何人有所帮助,我在 youtu.be/rtZKUnks6jI 上发布了一段视频来解释这个过程。
1赞 Mike Post 11/11/2017
对于节点 6.x,用于在第一行自动停止。node --inspect --debug-brk server.js
6赞 cmd 1/21/2017 #27

有很多可能性......

调试支持通常使用 v8 调试协议或更新的 Chrome 调试协议来实现。

10赞 Surendra Babu Parchuru 10/15/2017 #28

Visual Studio Code 将在调试中为我们工作。

8赞 Rahul Kumar 2/10/2018 #29

使用 --inspect 标志启动节点进程。

node --inspect index.js

,然后在 chrome 中打开。单击“打开 Node 专用 DevTools”链接或安装 chrome 扩展程序以轻松打开 chrome DevTools。chrome://inspect

有关更多信息,请参阅链接

4赞 Zahirul Haque 3/24/2018 #30

使用此命令

DEBUG_LEVEL=all node file.js
DEBUG=* node file.js
node file.js --inspect
0赞 Mr. Raj Kale 4/5/2018 #31

调试 Node.JS 应用程序的方法如下:

1)安装devtool并用它启动应用程序

npm install devtool -g --save
devtool server.js

这将在 Chrome 开发者模式下打开,因此您可以放置调试器点并进行测试。

2) 使用 Node-Inspector 进行调试

node-inspector

3) 使用 --debug 进行调试

node --debug app.js 
16赞 babidi 6/4/2018 #32

使用 Chrome 版本 67.0.3396.62(+)

  1. 运行节点应用

节点 --inspect-brk=0.0.0.0:9229 服务器.js(服务器 js 文件名)

  1. 在 chrome 中浏览您的应用程序,例如“localhost:port”
  2. 打开 DevTools。
  3. 单击响应式设备图标旁边的节点图标。

enter image description here

将弹出另一个 DevTools 窗口,专门用于调试节点应用。

enter image description here

2赞 Oleksii Trekhleb 9/20/2018 #33

如果您愿意,您可以使用纯 Node.js 并在控制台中调试应用程序。

例如,让我们创建一个要调试的虚拟文件,并在其中放置断点(语句):debug.jsdebugger

let a = 5;
debugger;

a *= 2;
debugger;

let b = 10;
debugger;

let c = a + b;
debugger;

console.log(c);

然后,您可以使用命令运行此文件进行调试:inspect

node inspect debug.js

这将在控制台中启动调试器,你将看到类似于以下内容的输出:

< Debugger listening on ws://127.0.0.1:9229/6da25f21-63a0-480d-b128-83a792b516fc
< For help, see: https://nodejs.org/en/docs/inspector
< Debugger attached.
Break on start in debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
  2 debugger;
  3

您可能会注意到,文件执行已在第一行停止。从这一刻起,您可以使用以下命令(热键)逐步浏览文件:

  • cont继续,
  • next要转到下一个断点,
  • in介入,
  • out走出去
  • pause暂停它

让我们键入几次,看看我们如何从一个断点到另一个断点:cont

debug> next
break in misc/debug.js:1
> 1 (function (exports, require, module, __filename, __dirname) { let a = 5;
  2 debugger;
  3
debug> next
break in misc/debug.js:2
  1 (function (exports, require, module, __filename, __dirname) { let a = 5;
> 2 debugger;
  3
  4 a *= 2;
debug> next
break in misc/debug.js:4
  2 debugger;
  3
> 4 a *= 2;
  5 debugger;
  6

我们现在可以做的是,此时我们可以通过编写命令来检查变量值。这将允许您编写变量名称并查看其值:repl

debug> repl
Press Ctrl + C to leave debug repl
> a
5
> b
undefined
> c
undefined
>

你可能会看到,我们此刻有 和 和 是不确定的。a = 5bc

当然,对于更复杂的调试,您可能需要使用一些外部工具(IDE、浏览器)。您可以在此处阅读更多内容。

评论

0赞 Ciro Santilli OurBigBook.com 8/4/2019
在 node.js v10.15.1 中测试。有什么方法可以让它自动继续到第一个而不输入吗?debuggerc
4赞 Mukesh 12/12/2018 #34

ndb 是 Node.js 的改进调试体验,由 Chrome DevTools 启用

https://github.com/GoogleChromeLabs/ndb

1赞 Vivek Anand 11/14/2019 #35

有很多方法可以调试,但我更喜欢,我使用 node js 的内置调试器。

app.js 文件

var fs = require('fs');

fs.readFile('test.txt', 'utf8', function (err, data) {

debugger;

if (err) throw err;

console.log(data); });

命令: node debug app.js

2赞 Vipul Dessai 12/26/2019 #36

从“文件”-“>首选项”-“>设置”->启用 VS Code 首选项“自动附加” 搜索“自动附加”并将其设置为“打开”,打开控制台 ( + ) 或从菜单终端 -> “新建终端”,在代码中设置断点,键入命令ctrl*

node --inspect <name of your file>

这将开始调试,VS Code 将显示“调试”菜单。

注意:如果您使用的是节点集群工作线程,自动附加也非常有用。

3赞 flippingnarrative 1/22/2020 #37

其他答案中未提及的另一个选项是使用名为 Rookout 的工具。它用于调试本地和远程应用并从中获取数据。我们在生产环境中使用它来聚合数据到其他服务 - 为我们省去了很多麻烦和硬编码日志记录

评论

0赞 hongsy 1/22/2020
请考虑在您的答案中添加一些解释和细节。虽然它可能会回答这个问题,但仅仅添加一些链接并不能帮助 OP 或未来的社区成员理解问题或解决方案。
1赞 LEMUEL ADANE 2/27/2020 #38

您可以尝试捕获错误:

function yourFunc() {
  try {
      // YOUR CODE HERE
  } catch (err) {
      console.error(err.message + ", " + err.trace);
  }
}

错误消息和错误跟踪将为您提供识别和更正运行时 bug 所需的信息。

3赞 Supun Sandaruwan 5/4/2021 #39

此方法对 JSNode js 都有效。这是你要检查的词。运行 JS 或 Node js 应用时,请在浏览器中打开 inspect 元素。如果到达该行,执行将暂停,如下图所示。debugger

enter image description here

1赞 bvdb 7/28/2021 #40

使用 IDE

在 WebStorm 中,您只需打开 package.json 文件,然后从那里以 DEBUG 模式运行脚本。只需单击侧面的绿色播放按钮即可。

enter image description here

使用 --inspect

如果要在没有 IDE 的情况下直接从 CLI 调试应用程序,则可以像 .默认情况下,它将侦听端口 5858,从而允许你连接调试器。或者,您可以使用 指定其他端口。node index.js --inspect--inspect=5858

使用环境变量

  1. 创建一个如下所示的脚本:myInspector.js
let inspector = require("inspector");

// you could explicitly specify a port.
// or alternatively set it to 0 to get any available port.
const port = 0;
inspector.open(port, undefined, true);

// print the url which also reveals the port.
const url = inspector.url()
console.log(url);
  1. 设置环境变量NODE_OPTIONS="--require myInspector.js"
  2. 启动脚本。

事实上,这也是 WebStorm 注入检查器的方式。美妙之处在于,无论您使用哪种发射器,它都可以工作。因此,您可以直接使用,甚至可以使用一些.sh / .bat文件。npm run ...node-ts ...

0赞 Divek John 8/25/2021 #41

专为使用 node js 的 VS code 开发人员提供。启用内置调试

文件>首选项>设置>在搜索框中键入“autoattach”并设置调试器应如何附加 [preferred onlyWithFlag]autoattach-enable

说魔术,你应该看到

autoattach-active

使用 --inspect 运行节点程序,您应该与代码:)

提示:您也可以通过启用 always filter 来不使用 --inspect 运行

1赞 darky 3/19/2022 #42

请尝试使用智能日志调试 Node.js 应用程序(不仅如此)的有趣方式

https://github.com/darky/the-most-convenient-debug