2015-07-10 206 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頁面上。

相關問題