使用express,如何在不重启服务器的情况下加载控制器代码更改?

Kam*_*i81 1 node.js express

目前,我可以更改模板文件并查看加载的最新更改.但是,当我在控制器中进行更改时,它们不会加载到代码库中.换句话说,当我更改控制器代码时,我必须重新启动开发服务器.有什么方法可以防止这种情况吗?

Nat*_*ate 7

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

但是,有些工具可以在开发期间自动执行该过程.我使用主管,像这样:

  1. 添加supervisordevDependencies您的package.json安装它.

    npm install --save-dev supervisor
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在我的项目的顶层,我创建了一个可执行的shell脚本,调用./dev了以下内容:

    #!/bin/bash
    ./node_modules/.bin/supervisor -i node_modules --no-restart-on error -- ./app.js
    
    Run Code Online (Sandbox Code Playgroud)

这告诉supervisor我运行我的app(app.js),并监视当前目录和任何子目录.如果.js更改了任何文件,它将重新启动应用程序.(如果要监视其他文件,请参阅文档,例如.json.)

-i node_modules标志告诉supervisor忽略node_modules子目录中的任何文件.

使用该--no-restart-on error标志,它将不会在出错时重新启动应用程序.那是因为我想看到错误; 我不希望它一遍又一遍地循环,重新启动并显示错误.

结论:每次保存.js文件或创建新文件时,应用程序都会重新启动.