目前,我可以对模板文件进行更改并查看加载的最新更改。但是,当我在控制器中进行更改时,它们不会加载到代码库中。换句话说,当我更改控制器代码时,我必须重新启动开发服务器。有什么方法可以阻止这种情况吗?
答案 0 :(得分:7)
您必须重新启动应用才能加载代码更改。没有简单的方法。
但是,有一些工具可以在开发期间自动执行该过程。我使用supervisor,如下所示:
在supervisor
中将devDependencies
添加到package.json
并安装。
npm install --save-dev supervisor
在我的项目的顶层,我创建了一个名为./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
文件或创建新文件时,应用程序都会自动重启。
答案 1 :(得分:2)
您必须重新启动应用才能加载代码更改。没有办法解决它。
这个实际上是错误的。
您可以再次清除require.cache和require模块,然后重新加载。使用像hotswap这样的模块,它就是这样做的。
也就是说,hotswapping代码是内存泄漏的常见原因,所以你真的不应该在生产系统上这样做。
答案 2 :(得分:1)
您必须为您更改的代码强制使用新的require("...")
,或使用像forever
这样的程序包来监视更改并重新启动您的应用程序(但请注意,重新启动与实时重新加载不同当然)