2015-07-10 212 views
2

我必须建立与快递发生器产生如下一个简单的快递网络服务器:重新加载浏览器

express test -ejs 

一切工作正常,到目前为止,我有以下文件夹(有一些变化):

app folder

我想现在实现的是:
- 对我在“/routes/*.js”和” ./*工作的每一个文件。 js“,保存重新加载服务器和t他浏览器
- 在“/视图”的所有文件和“/公众”,只会在保存时重新加载浏览器

的,我已经设置了代理模式如下浏览器同步一饮而尽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服务器被配置为侦听端口5000)。

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

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

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

回答

2

似乎浏览器同步需要一个合适的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页面上。

相关问题