在 Webstorm 7.0.3 中调试时热交换 Node.js 文件

Posted

技术标签:

【中文标题】在 Webstorm 7.0.3 中调试时热交换 Node.js 文件【英文标题】:Hot swap Node.js files while debugging in Webstorm 7.0.3 【发布时间】:2014-03-06 04:21:54 【问题描述】:

我开始使用 Node.js 和 Webstorm 7.0.3。我用 express 创建了一个简单的 Node.js 应用程序,并在本地运行它。 我想编辑并保存一个 .js 文件,刷新浏览器并查看更改。据我了解,这应该是开箱即用的。

以下是有效的:

我启动 Node.js 服务器 我使用 Chrome 导航到快速路径 页面正确呈现。

以下是行不通的:

我更改了呈现页面的 javascript 函数 我保存文件 我刷新浏览器 网页未反映 JavaScript 函数的更改

以下是我在 JetBrains 帮助网站上遵循的说明:

创建名为“app.js”的 Node.js 运行/调试配置 检查“启动后”和“使用 Javascript 调试器”选项 创建一个名为“app.js.JavaScript”的 JavaScript 调试配置 为“app.js”配置选择“调试”。 Node.js 服务器启动 为“app.js.JavaScript”选择“调试”。 我现在可以在应用程序中设置断点。

但是,如果我更改呈现页面、保存文件并刷新浏览器的 JS 函数,更改不会出现。

配置:

WebStorm 7.0.3 带有 JetBrains 插件 2.0 的 Chrome Windows 8 Node.js 快递3.4.8 hjs

【问题讨论】:

【参考方案1】:

有一个名为 hotswap (https://github.com/rlidwka/node-hotswap) 的模块看起来也很有希望 - 本质上,您可以通过 hotswap 模块访问模块的方法,该模块会为您检查幕后的变化。您通过 hotswap 对象访问模块的方法,如果发生更改,则无需重新启动服务器即可反映。

我还没有深入研究模块本身,但我可以想象存在内存问题(Node 在加载时缓存所需的模块,我不确定它如何清理它们)和可能的性能问题。非常适合开发,不确定您是否希望将其用于生产。

【讨论】:

【参考方案2】:

当您说“更改呈现页面的 JavaScript 函数”时,我假设该函数是服务器上的路由函数。例如:

exports.form = function (req, res) 
    res.render('login',  title: 'Login', message: req.flash('error') );
;

刷新浏览器时不会自动获取对任何服务器端代码的更改。您通常必须重新启动服务器才能使这些更改生效。

但是,请查看nodemon。 Nodemon 监视文件系统的更改并在检测到更改时自动重新启动服务器。对开发非常有用。

另外,看看这篇文章,了解如何将 nodemon 与 WebStorm 集成:

How can I run nodemon from within WebStorm?

【讨论】:

不错。我从 node.js 命令提示符添加了 nodemon。然后编辑“app.js”配置。我将节点解释器更改为“C:\Users\ahoffer\AppData\Roaming\npm\nodemon.cmd”。当我更改为路由功能时,服务器会自动启动。

以上是关于在 Webstorm 7.0.3 中调试时热交换 Node.js 文件的主要内容,如果未能解决你的问题,请参考以下文章

WebStorm+Chrome调试Vue步骤

在WebStorm 7中调试时未打到Typescript断点

调试 Node.js 应用程序时,WebStorm 在错误的文件上停止

用webstorm在chrome 调试页面时一直弹出 copy authorization url to clipboard

使用Gulp任务和WebStorm调试Protractor测试

来自Webstorm的Grunt调试