2017-02-16 11 views
0

phpのサポートといくつかの特定のURL書き換えでbrowserSyncを使用する能力が必要です。私は、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は、BEFORE飲み込む-接続して、一口-接続し、飲み込む-接続で使用するポート8010の起動に失敗した利用が開始されます。私はNPM sleepパッケージをインストールし、browserSyncを起動する前に次の行を追加

:他の言葉で

sleep.sleep(15) 

を、私はbrowserSyncを起動する前に15秒の遅延を追加しました。 これは機能しますが、より洗練されたソリューションがあると確信しています。

お願いします。

答えて

0

gulp-connectは内部的にwraps 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' 
     }); 
    }); 
関連する問題