重新加载Express.js路由更改,而无需手动重新启动服务器

时间:2014-07-15 05:24:55

标签: javascript node.js express

我尝试了express-livereload,但它只是重新加载了视图文件。

我应该使用其他工具,还是可以配置这个工具来监视运行服务器的index.js文件?

我读到的选项与node-livereload相同,观看文件的默认选项包括.js个文件。

您使用简单配置知道的任何网址?

我的主要问题是如何为Express.js设置良好的开发环境,我想在发出请求时检查变量,每次在路由中进行更改都会很难重启。

PS我在服务器处理请求时尝试node-inspector来检查变量,但似乎node-inspector不适用于此,对吗?

3 个答案:

答案 0 :(得分:59)

我认为Nodemon有你想要的东西。

  

Nodemon是一个实用程序,它将监视源中的任何更改并自动重新启动服务器。完美的发展。

示例调用:

nodemon index.js

答案 1 :(得分:3)

我使用express.js,通常是通过

启动服务器
npm start

安装了Nodemon,我使用

nodemon --exec npm start

注意:nodemon app.js不会在这里工作,

因为express.js使用start脚本

答案 2 :(得分:2)

您可以使用“ livereload”,“ connect-livereload”和“ nodemon”将前端和后端更改实时重新加载到浏览器。而且,这种方式您不需要Gulp或Grunt。他们如何一起工作:

  • livereload打开一个高端口,并将任何更改的文件通知浏览器
  • connect-livereload猴子用连接到此高端口的JavaScript代码片段修补了每个投放的HTML页面
  • nodemon在任何更改的后端文件上重新启动服务器

在Express中设置实时重载

将Express设置为在nodemon引起的重启期间启动livereload服务器以监视公共目录并ping通浏览器:

const livereload = require("livereload");
const connectLivereload = require("connect-livereload");

// open livereload high port and start to watch public directory for changes
const liveReloadServer = livereload.createServer();
liveReloadServer.watch(path.join(__dirname, 'public'));

// ping browser on Express boot, once browser has reconnected and handshaken
liveReloadServer.server.once("connection", () => {
  setTimeout(() => {
    liveReloadServer.refresh("/");
  }, 100);
});

const app = express();

// monkey patch every served HTML so they know of changes
app.use(connectLivereload());

使用Nodemon启动Express

例如,通过运行npm run watch,使用nodemon启动服务器,并使用专用监视脚本启动它。

这里的关键点是忽略livereload已经监视的公共目录。您还可以配置带有非默认扩展名的文件,例如pug和mustache,以进行监视。

"scripts": {
  "start": "node ./bin/www",
  "watch": "nodemon --ext js,pug --ignore public"
},

您可以在"Refresh front and backend changes to browser with Express, LiveReload and Nodemon."

中阅读更长的解释