2017-02-16 3 views
0

browserSync를 PHP 지원 및 특정 URL 재 작성 기능과 함께 사용해야합니다. Gulp-Connect-PHP 패키지와 Gulp-Connect + modrewrite가 포함 된 browserSync를 만들었습니다.Gulp-Connect-Php + browserSync + Gulp-Connect 사용중인 주소 문제

var 
browserSync = require('browser-sync'), 
phpconnect = require('gulp-connect-php'), 
connect  = require('gulp-connect'), 
modrewrite = require('connect-modrewrite'), 

phpconnect.server({base:'dist/',port: 8010}, function(){ 
    connect.server({ 
    port: 8001, 
    middleware: function() { 
     return [ 
      modrewrite([ 
       '^/admin/(.*) - [L]', 
       '^([^.]*|.*?\.php)$ http://localhost:8010$1 [P,NC]' 
      ]) 
     ]; 
    } 
}) 

browserSync({ 
    injectChanges: true, 
    proxy: '127.0.0.1:8010' 
}); 

})

이 잘 작동 정확히 내가 필요로 : 여기 내 설정이다. 다음 문제는 내가 그것을 시작할 때 수시로 발생 즉

[error] You tried to start Browsersync twice! To create multiple instances, use browserSync.create().init() 
events.js:141 
     throw er; // Unhandled 'error' event 
    ^

Error: listen EADDRINUSE :::8001 

이 browserSync 전에 꿀꺽-연결을 시작하고 사용해야 포트 8010 사용 꿀꺽을-연결하고 쭉 마시는-연결이 시작되지 않습니다.

나는 NPM sleep 패키지를 설치하고 browserSync를 시작하기 전에 다음 줄을 추가 :

sleep.sleep(15) 

은 즉, 내가 browserSync을 실행하기 전에 15 초 지연을 추가했다. 작동하지만 좀 더 우아한 해결책이있을 것입니다.

제발, 조언.

답변

0

gulp-connect 내부적으로 연결이 끊어 지므로 노드 http 서버가 시작됩니다.

서버가 시작되면 이벤트는 listening이라는 이벤트를 내 보냅니다. https://nodejs.org/api/net.html#net_event_listening

var 
    browserSync = require('browser-sync'), 
    phpconnect = require('gulp-connect-php'), 
    connect  = require('gulp-connect'), 
    modrewrite = require('connect-modrewrite'), 

    phpconnect.server({base:'dist/',port: 8010}, function(){ 
     var app = connect.server({ 
     port: 8001, 
     middleware: function() { 
      return [ 
       modrewrite([ 
        '^/admin/(.*) - [L]', 
        '^([^.]*|.*?\.php)$ http://localhost:8010$1 [P,NC]' 
       ]) 
      ]; 
     } 
    }) 
    app.server.on('listening', function() { 
     browserSync({ 
     injectChanges: true, 
     proxy: '127.0.0.1:8010' 
     }); 
    });