https://nodejs.org/api/net.html#net_event_listening

ужна возможность использовать browserSync с поддержкой php и переписывать некоторые конкретные URL-адреса. Я придумал browserSync с пакетами Gulp-Connect-Php плюс Gulp-Connect + modrewrite. Вот мой конфиг:

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 запускается ДО gulp-connect и использует порт 8010, который должен использоваться gulp-connect, и gulp-connect не запускается.

Я установил нпмsleep пакет и добавил следующую строку перед запуском browserSync:

sleep.sleep(15)

другими словами, я добавил 15-секундную задержку перед запуском browserSync. Это работает, но я уверен, что есть более элегантное решение.

Пожалуйста, порекомендуйте.

Ответы на вопрос(1)

Ваш ответ на вопрос