2015-07-10 3 views
2

У меня есть построить простой экспресс-веб-сервер, созданный с экспресс-генератора следующим образом:перегрузочный браузер для каждого маршрутов (Экспресс + глотком + Browsersync)

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 (мой экспресс-сервер настроен на прослушивание порта 5000).

Теперь моя проблема заключается в том, что браузер не всегда обновляет мой браузер при перезагрузке (даже если синхронизация браузера получает событие перезагрузки) на самом деле он обновляется только тогда, когда я нахожусь на первом пути маршрута, указанном в app.js. Например, если у меня есть следующий код в app.js:

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

Browser синхронизация будет только перезагрузить браузер 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-странице.

Смежные вопросы