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. Это работает, но я уверен, что есть более элегантное решение.
Пожалуйста, порекомендуйте.