使用快递,如何加载控制器代码更改,而无需重新启动服务器?

目前我可以对模板文件进行更改并查看加载的最新更改。 但是,当我在控制器中进行更改时,他们不会加载到代码库中。 换句话说,当我更改控制器代码时,我必须重新启动dev服务器。 有什么办法可以防止这个?

您必须重新启动您的应用程序才能加载代码更改。 有没有简单的方法。

但是,有一些工具可以在开发过程中自动执行该过程。 我使用这样的主pipe :

  1. 在你的package.json添加supervisor devDependencies并安装它。

     npm install --save-dev supervisor 
  2. 在我的项目的顶层,我创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那样使用一个包来监视变化并重新启动你的应用程序(但是请注意,重新启动不像是实时重装)