2015-09-28 4 views
3

Я пытаюсь настроить Gulp посмотреть 1 вещь: источник сервера. При обновлении исходного кода скрипт узла сервера запустится на & клиентский браузер обновится.Gulp Watch - gulp-nodemon - приложение разбито

Я считаю, что нужно Глоток-nodemon для сервера, в то время как браузера-синхронизации для клиента.

Сценарий сервера выполняется: узла ЦСИ \ babel.js
Скрипт работает, когда побежал так, но терпит неудачу в моей конфигурации для Глоток.

Есть ли что-то, что я делаю неправильно?

Это моя задача сценария:

var gulp = require('gulp'); 
var browserSync = require('browser-sync'); 
var nodemon = require('gulp-nodemon'); 



gulp.task('default', ['watchServer', 'watchClient']); 

gulp.task('watchServer', function() { 
    gulp.watch('src/**', function() { 
     nodemon({ // called upon update 
      script: 'src/babel.js', // I have tried both/& \\ 
     }) 
    }); 

    nodemon({ // called on start 
     script: 'src/babel.js', // I have tried both/& \\ 
    }) 
}); 

gulp.task('watchClient', function() { 
    browserSync({ 
     open: 'external', 
     host: '████████', 
     port: 80, 
     ui: false, 
     server: { 
      // We're serving the src folder as well 
      // for sass sourcemap linking 
      baseDir: ['src'] 
     }, 
     files: [ 
     'src/**' 
     ] 
    }); 
}); 

Log:

> gulp 

[02:28:04] Using gulpfile B:\Test Server\gulpfile.js 
[02:28:04] Starting 'watchServer'... 
[02:28:04] Finished 'watchServer' after 19 ms 
[02:28:04] Starting 'watchClient'... 
[02:28:04] Finished 'watchClient' after 27 ms 
[02:28:04] Starting 'default'... 
[02:28:04] Finished 'default' after 9.66 μs 
[02:28:04] [nodemon] 1.7.1 
[02:28:04] [nodemon] to restart at any time, enter `rs` 
[02:28:04] [nodemon] watching: *.* 
[02:28:04] [nodemon] starting `node src\babel.js` 
[BS] Access URLs: 
----------------------------------- 
    Local: http://localhost:80 
External: http://████████:80 
----------------------------------- 
[BS] Serving files from: src 
[BS] Watching files... 
events.js:141 
     throw er; // Unhandled 'error' event 
    ^

Error: listen EADDRINUSE :::80 
    at Object.exports._errnoException (util.js:837:11) 
    at exports._exceptionWithHostPort (util.js:860:20) 
    at Server._listen2 (net.js:1231:14) 
    at listen (net.js:1267:10) 
    at Server.listen (net.js:1363:5) 
    at B:/Test Server/src/app/app.jsx:17:7 
    at Object.<anonymous> (B:/Test Server/src/app/app.jsx:41:2) 
    at Module._compile (module.js:434:26) 
    at normalLoader (B:\Test Server\node_modules\babel-core\lib\api\register\node.js:199:5) 
    at Object.require.extensions.(anonymous function) [as .jsx] (B:\Test Server\node_modules\babel-core\lib\api\register\node.js:216:7) 
[02:28:05] [nodemon] app crashed - waiting for file changes before starting... 

ответ

2

Вам не нужно смотреть на файл-сервер с глотком, поскольку nodemon автоматически перезагрузится, когда она меняется, попробуйте что-то вроде это в вашей конфигурации

gulp.task('watchServer', function() { 
    // remove the gulp.watch entry 

    nodemon({ // called on start 
     script: 'src/babel.js', // I have tried both/& \\ 
     ext: 'js', 
     watch: ['src/babel.js'] 
    }) 
}); 

Там также, похоже, что-то еще работает на порту 80 (t его порт по умолчанию для apache), так что это может помочь изменить порт browsersync работает на что-то вроде 4000

Если ваш сервер узла работает, скажем, порт 3000, вам нужно проксировать его с помощью браузера, например.

gulp.task('watchClient', function() { 
    browserSync({ 
     open: 'external', 
     host: '████████', 
     proxy: '[YOURHOST]:3000' 
     port: 4000, 
     ui: false, 
     // this entry will most likely need to be removed 
     // if you are using something like express as a static server 
     server: { 
      // We're serving the src folder as well 
      // for sass sourcemap linking 
      baseDir: ['src'] 
     }, 
     files: [ 
     'src/**' 
     ] 
    }); 
});