使用快递,如何加载控制器代码更改,而无需重新启动服务器?
目前我可以对模板文件进行更改并查看加载的最新更改。 但是,当我在控制器中进行更改时,他们不会加载到代码库中。 换句话说,当我更改控制器代码时,我必须重新启动dev服务器。 有什么办法可以防止这个?
您必须重新启动您的应用程序才能加载代码更改。 有没有简单的方法。
但是,有一些工具可以在开发过程中自动执行该过程。 我使用这样的主pipe :
-
在你的
package.json
添加supervisor
devDependencies
并安装它。npm install --save-dev supervisor
-
在我的项目的顶层,我创build了一个名为
./dev
的可执行shell脚本,其内容如下:#!/bin/bash ./node_modules/.bin/supervisor -i node_modules --no-restart-on error -- ./app.js
这告诉supervisor
运行我的应用程序( app.js
),并监视当前目录和任何子目录。 如果任何.js
文件被更改,它将重新启动应用程序。 (如果要监视其他文件,请参阅文档,如.json
。)
-i node_modules
标志告诉supervisor
程序忽略node_modules
子目录中的任何文件。
使用--no-restart-on error
标志,它不会在错误时重新启动应用程序。 那是因为我想看到错误; 我不希望它不断循环,重新启动,并一遍又一遍地显示错误。
底线:每次我保存.js
文件或创build一个新的,应用程序重新启动自己。
您必须重新启动您的应用程序才能加载代码更改。 这是没有办法的。
这其实是错误的。
您可以清除require.cache并重新请求模块,并重新加载。 使用像hotswap这样的模块。
这就是说,热门代码是内存泄漏的常见原因,所以你真的不应该在生产系统上这样做。
你必须为你改变的代码强制一个新的require("...")
,或者像forever
那样使用一个包来监视变化并重新启动你的应用程序(但是请注意,重新启动不像是实时重装)