为每个路线重新加载浏览器(Express + gulp + Browsersync)

我已经build立了一个快速生成器生成一个简单的快速Web服务器如下:

express test -ejs 

一切工作正常,我有以下文件夹(几个变化):

应用文件夹

我现在想要实现的是:
– 对于我正在“/routes/*.js”和“./*.js”中处理的每个文件,保存重新加载服务器和浏览器
– 对于“/ views”和“/ public”中的每个文件,只保存重新加载浏览器

为此,我在代理模式下设置了一个带浏览器同步的gulp file.js,如下所示:

 var server = require('gulp-develop-server'); var bs = require('browser-sync').create(); (some tasks for checking js and less ...) var options = { server: { path: './bin/www', execArgv: ['--harmony'] }, bs: { proxy: { target: 'http://localhost:5000', middleware: function (req, res, next) { console.log(req.url); next(); } }, files: ['./public/**/*', './views/*'], // files to watch with bs instantly (.ejs & .css) logLevel: 'debug' } }; gulp.task('start', ['js','less'], function () { server.listen(options.server, function (error) { if (!error) bs.init(options.bs); }); gulp.watch('./less/*.less', ['less-nonstop']); gulp.watch(['./*.js', './routes/*.js'], ['restart:forjs']); gulp.watch('./views/*').on('change', bs.reload); }); 

代理工作正常, http:// localhost:3000上的每个页面都与http:// localhost:5000 (我的express服务器configuration为在端口5000上侦听)给了我相同的页面。

现在我的问题是浏览器同步并不总是刷新我的浏览器重新加载(即使浏览器同步获取重载事件)实际上它只刷新当我在app.js中指定的第一个pathpath。 例如,如果我在app.js中有以下代码:

 app.use('/bonjour', routes); app.use('/users', users); 

浏览器同步只会重新加载http:// localhost:3000 / bonjour上的浏览器,而不会在http:// localhost:3000 / users或任何其他path上。 即使浏览器同步获取重新加载事件(因为我可以在控制台日志中检查)。 看起来,当我显示除app.js中指定的第一个路由之外的任何其他页面时,我的浏览器就像浏览器同步的“断开连接”。
这是为什么 ? 我怎样才能解决它?

似乎浏览器同步需要一个适当的HTML页面渲染工作,这就是为什么它不在其他路线在这种情况下工作。 事实上,我的error.ejs文件只是:

 <h1><%= message %></h1> <h2><%= error.status %></h2> <pre><%= error.stack %></pre> 

将其更正为:

 <!DOCTYPE html> <html> <body> <h1><%= message %></h1> <h2><%= error.status %></h2> <pre><%= error.stack %></pre> </body> </html> 

解决了这个问题,现在浏览器同步在每个html页面上都起作用。