Deno 中如何进行调试

前言

Deno 是一个近期比较火热的 JavaScript / TypeScript 运行环境,它通过 V8 引擎执行代码,和 Node.js 不同,Deno 采用了安全沙箱机制,脱离 npm,不再需要 package.json 等配置文件,也不依赖全局安装的 Node.js。Deno 从一开始就内置了 TypeScript 支持,使用起来十分方便。

然而,当我们出现问题时,如何在 Deno 中进行调试呢?本文将详细介绍 Deno 的调试方式,并为大家提供实用的指导意义和示例代码。

目录

  • Deno 调试方式
  • 具体调试流程
  • 实例演示

Deno 调试方式

Deno 默认支持 Chrome 开发者工具进行调试,类似于浏览器中的开发者工具,在代码中插入 debugger; 即可暂停程序运行并打开调试器。

值得注意的是,Deno 中的 debugger; 语句只能停止当前文件的执行,无法停止子模块的执行。也就是说,如果你的代码中调用了其他模块(模块 A 调用了模块 B),在模块 A 中插入 debugger; 无法在模块 B 中暂停程序执行。你需要进入模块 B 中插入 debugger; 来调试模块 B。

此外,Deno 还提供了 --inspect 标志来运行脚本,并启用 Chrome 开发者工具的远程调试功能。

具体调试流程

接下来,我们以一个简单的示例来演示具体的调试流程。

创建一个简单的文件

我们首先创建一个简单的 TypeScript 文件 index.ts

-------- ------ ------- -- -------- ------ -
  ------ - - --
-

------------------ ----

该文件仅仅是定义了一个简单的函数,然后输出函数的调用结果。

插入 debugger; 调试语句

为了利用 Chrome 开发者工具进行调试,我们在 index.ts 文件中插入 debugger; 语句:

-------- ------ ------- -- -------- ------ -
  ---------
  ------ - - --
-

------------------ ----

运行脚本并启用远程调试

在命令行中,我们运行如下命令来使用 --inspect 标志启用远程调试:

---- --- --------- --------

Deno 将会在默认的 127.0.0.1:9229 上启动一个调试服务器,并监听该地址上的请求。

打开 Chrome 开发者工具

在 Chrome 中打开 chrome://inspect 页面,并点击 Open dedicated DevTools for Node

你会看到 DevTools 弹窗提示需要配置 Remote Target,点击 Configure 配置端口和远程地址。

配置完成后,你就可以在 DevTools 中看到你的脚本运行的具体信息,并进行调试。

实例演示

上面我们已经演示了 Deno 的具体调试流程,下面我们看一个真实的调试例子。

考虑如下代码,我们要使用 Deno 进行调试:

-- -------

------ -------- ------ ------- -- -------- ------ -
  ------ - - --
-

------ -------- ----------- ------- -- -------- ------ -
  ------ - - --
-
-- --------

------ - --- - ---- ------------

------------------ ----

index.ts 中,我们只使用了 add 函数。现在我们要在 add 函数中插入 debugger; 语句进行调试。

我们首先需要修改 index.ts 文件:

------ - --- - ---- ------------

---------
------------------ ----

然后在命令行输入如下命令:

---- --- --------- --------

最后在 Chrome 开发者工具中进行调试即可。在代码中插入 debugger; 将会暂停程序的执行,你可以在这个时候观察变量的值,继续执行程序等。通过这种方式,可以更加方便地进行调试。

结论

本文详细介绍了 Deno 的调试方式,使用 debugger; 语句可以让我们更加方便地进行调试。此外,Deno 还提供了 --inspect 标志,帮助我们启用 Chrome 开发者工具的远程调试功能,更加方便我们进行调试。

当然,调试一定是针对具体场景的,如果你有更复杂的调试需求,可以访问 Deno 中文官网 寻求更多帮助和支持。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/67051c80d91dce0dc851dced