在 Chrome 中调试 JavaScript
最后修改时间:2023 年 11 月 21 日PyCharm 为您的客户端JavaScript 代码提供内置调试器。
笔记
仅Google Chrome和其他基于 Chromium 的浏览器支持 JavaScript 代码的调试。
在你开始之前
确保在设置中启用JavaScript 和 TypeScript捆绑插件。按打开 IDE 设置,然后选择插件。单击“已安装”选项卡。在搜索字段中,输入JavaScript 和 TypeScript。有关插件的更多信息,请参阅管理插件。CtrlAlt0S
确保在设置中启用JavaScript 调试器捆绑插件。按打开 IDE 设置,然后选择插件。单击“已安装”选项卡。在搜索字段中,输入JavaScript 调试器。有关插件的更多信息,请参阅管理插件。CtrlAlt0S
配置内置调试器,如配置 JavaScript 调试器中所述。
要使您对 HTML、CSS 或 JavaScript 代码所做的更改立即显示在浏览器中而无需重新加载页面,请激活实时编辑功能。有关实时编辑功能的更多信息,请参阅HTML、CSS 和 JavaScript 中的实时编辑。
调试在内置服务器上运行的应用程序
PyCharm 有一个内置的 Web 服务器,可用于在 Web 浏览器或 IDE 的内置浏览器中预览和调试应用程序。该服务器始终运行,不需要任何手动配置。
开始调试
根据需要在 JavaScript 代码中设置断点。
打开引用要调试的 JavaScript 的 HTML 文件,或在“项目”工具窗口中选择该 HTML 文件。
从编辑器或选择的上下文菜单中,选择Debug <HTML_file_name>。PyCharm 生成调试配置并通过它启动调试会话。文件将在浏览器中打开,并出现“调试”工具窗口。
提示
要保存自动生成的配置以供进一步重复使用,请在调试会话结束后从上下文菜单中选择“保存 <HTML_file_name>” 。
在“调试”工具窗口中,照常进行:单步执行程序、停止和恢复程序执行、挂起时检查程序、查看实际的 HTML DOM、在控制台中运行 JavaScript 代码片段等。
提示
默认情况下,调试会话会在带有自定义Chrome 用户数据的新窗口中启动。要打开具有您熟悉的外观的新 Chrome 实例,请在 PyCharm 中配置 Chrome 以从您的用户数据开始。有关详细信息,请参阅使用默认 Chrome 用户数据启动调试会话。
例子
假设您有一个简单的应用程序,由一个index.html文件和一个index.js文件组成,其中index.html引用index.js。
要使用内置服务器开始调试此应用程序,请在index .js中设置断点,在编辑器中打开index .html ,然后从上下文菜单中选择“调试‘index.html’” 。
PyCharm 自动创建运行/调试配置,并启动调试会话。
要重新启动新的运行/调试配置,请从列表中选择它并单击。
在浏览器中重新加载当前页面
除了通过单击“调试”工具窗口中的“重新运行”按钮 ( ) 来重新启动应用程序之外,您还可以使用“在浏览器中重新加载”操作来重新加载当前导航的页面。这与 Chrome 中的重新加载页面功能 ( )的工作方式相同。Ctrl0R
要重新加载当前页面,请单击工具栏上的 并选择在浏览器中重新加载( )。
下面的示例显示了一个由两个 HTML 页面和一个 JavaScript 脚本组成的简单应用程序。起始home.html页面有一个“提交”按钮,按下该按钮后,calculator.html页面将打开,其中包含Calculator.js脚本执行的结果。
在调试会话期间,单击“重新运行”按钮 ( ) 将使用“提交”按钮重新加载home.html页面。单击“在浏览器中重新加载”按钮 ( ) 将重新加载Calculator.html页面,以便清除所有先前的脚本输出,并且调试器返回到Calculator.js中的第 1 行。
在开发模式下调试在本地主机上运行的应用程序
如果您的应用程序在开发模式下运行localhost
,您可以从内置终端( )、“运行”工具窗口或“调试”工具窗口开始调试它。只需按住并单击应用程序正在运行的 URL。AltF12CtrlShift
在代码中设置断点。
以开发模式启动应用程序,例如使用 npm 脚本。
运行工具窗口或终端显示应用程序正在运行的URL。按住并单击此 URL 链接。PyCharm 使用自动生成的调试会话启动调试会话CtrlShiftJavaScript Debug类型的配置。
调试在远程 Web 服务器上运行的应用程序
通常,您可能想要调试在外部开发 Web 服务器上运行的应用程序的客户端 JavaScript。
什么是远程网络服务器?
在 PyCharm 中,文档根目录位于当前项目之外的任何服务器都称为远程服务器。该服务器实际上可能在物理远程主机或您的计算机上运行。
例如,如果您的项目位于C:
如何将服务器上的应用程序源与 PyCharm 项目中的本地副本同步?
要在远程Web 服务器上调试应用程序,您需要在 PyCharm 项目中拥有其源代码的副本。要同步本地和远程源,请创建部署配置,如创建远程服务器配置和配置与服务器同步中所述。
在远程 Web 服务器上调试应用程序
根据需要在 JavaScript 代码中设置断点。
创建JavaScript 调试类型的运行/调试配置:
转到“运行”| 编辑配置,然后在“编辑配置”对话框中打开的“编辑配置”对话框中,单击工具栏上的“添加”按钮 ( ),并从列表中选择“JavaScript 调试” 。
在打开的“运行/调试配置:JavaScript 调试”对话框中,指定运行应用程序的 URL 地址。根据服务器访问配置,该 URL 地址应该是Web 服务器根 URL和相对于 Web 服务器文档根的 HTML 文件路径的串联。有关详细信息,请参阅配置与服务器的同步。
单击“确定”保存配置设置。
在工具栏的“选择运行/调试配置”列表中选择新创建的配置,然后单击“调试”按钮。运行配置中指定的 HTML 文件将在所选浏览器中打开,并显示“调试”工具窗口。
在“调试”工具窗口中,照常进行:单步执行程序、停止和恢复程序执行、挂起时检查程序、查看实际的 HTML DOM、在控制台中运行 JavaScript 代码片段等。
提示
默认情况下,调试会话会在带有自定义Chrome 用户数据的新窗口中启动。要打开具有您熟悉的外观的新 Chrome 实例,请在 PyCharm 中配置 Chrome 以从您的用户数据开始。有关详细信息,请参阅使用默认 Chrome 用户数据启动调试会话。
示例:不使用映射进行调试
假设您有一个简单的应用程序,由一个index.html文件和一个App.js文件组成,其中index.html引用App.js。
现在让我们将简单的应用程序部署到本地 Web 服务器,请参阅部署。在以下示例中,它是 Apache:
当使用本地 Web 服务器(例如 Nginx 或 Apache)(如我们的示例中所示)或 Web 服务器位于远程主机上时,您需要创建运行/调试配置来启动 JavaScript 调试器。为此,请单击 PyCharm 窗口右上角的列表,然后选择Edit Configurations。或者,选择运行 | 从主菜单编辑配置:
在“运行/调试配置”对话框中,单击并从列表中选择“JavaScript 调试” :
警告
不要为模板节点下列出的默认运行/调试配置设置工作目录。这可能会导致新创建的运行/调试配置中出现无法解析的目标。
指定正在运行的应用程序的 URL,在我们的示例中为
http://localhost:8888/MySimpleApp/index.html
在我们的示例中,本地项目结构和服务器上的文件结构相同,因此不需要映射。
现在我们可以开始调试:从 PyCharm 窗口右上角的列表中选择新的运行/调试配置,然后单击:
在“调试”工具窗口中,照常进行:单步执行程序、停止和恢复程序执行、挂起时检查程序、查看实际的 HTML DOM、在控制台中运行 JavaScript 代码片段等。
映射
映射设置 Web 服务器上的文件与其本地副本之间的对应关系。您需要映射:
当您的应用程序部署并在远程Web 服务器上运行时。
当您除了项目根之外还定义了多个资源根文件夹时。
PyCharm 尝试从部署配置或基于文件和脚本名称和内容猜测路径映射。但是,如果您的应用程序结构很复杂,则需要手动指定路径映射。
配置映射
创建JavaScript 调试类型的调试配置,如调试应用程序中所述。
在“本地文件的远程URL”区域中,根据当前使用的部署配置,将文件和文件夹映射到服务器上文件和文件夹的URL地址,请参见将本地文件夹映射到服务器上的文件夹以及访问的URL地址。
示例:使用映射进行调试
假设由于某种原因您决定更改上一个示例中应用程序的文件夹结构,并将index.html和App.js移动到单独的文件夹src。
由于本地源和 Web 服务器上的应用程序的结构不同,调试器将无法将本地源与实际执行的代码同步。
为了解决这个问题,我们将应用程序根目录的 URL 地址与src文件夹进行映射。
有关更多调试示例,请参阅 WebStorm 博客中的以下帖子:调试 React 应用程序和调试 Angular 应用程序。
调试异步代码
PyCharm 支持调试异步客户端 JavaScript 代码。PyCharm 可以识别异步代码中的断点,在断点处停止,并让您单步执行此类代码。一旦命中异步函数内的断点或单步执行异步代码,就会在“调试器”选项卡的“框架”Async call from <caller>
窗格中添加一个新元素。PyCharm 显示完整的调用堆栈,包括调用者和异步操作开始的整个过程。
在上面的示例中,调试器在第 3 行(断点)处停止,然后在第 5 行(断点)处停止。单击Step into后,调试器将停在第 5 行(在function
),然后移至第 6 行。
异步调试模式默认开启。要禁用异步堆栈跟踪,请js.debugger.async.call.stack.depth
在注册表中设置为0
。
调试工
PyCharm 支持调试Service Workers和Web Workers。PyCharm 可以识别每个工作线程中的断点,并在调试工具窗口的“调试器”选项卡上的“框架”窗格中将其调试数据显示为单独的线程。
请注意,PyCharm 只能调试专用工作线程,目前不支持调试共享工作线程。
在Workers中设置断点进行调试。
如果您使用Service Workers,请确保在“调试器”页面(“设置”|“构建、执行、部署”|“调试器”)上选中“允许未签名的请求”复选框。否则,您的服务工作线程可能在调试会话期间不可用。
创建JavaScript 调试类型的调试配置,如上面调试在外部 Web 服务器上运行的客户端 JavaScript中所述。
从工具栏上的选择运行/调试配置列表中,选择新创建的配置并单击它旁边的。
运行配置中指定的 HTML 文件将在浏览器中打开,并且“调试”工具窗口将打开,其中“框架”列表显示所有可用的Workers:
要检查Worker的数据(变量、监视等),请在列表中选择其线程,然后在“变量”和“监视”窗格中查看其数据。当您选择另一个Worker时,窗格的内容会相应更新。
感谢您的反馈意见!