首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gulp-连接-Php+ browserSync +Gulp-正在使用的连接地址问题

Gulp-连接-Php+ browserSync +Gulp-正在使用的连接地址问题
EN

Stack Overflow用户
提问于 2017-02-17 02:09:08
回答 1查看 908关注 0票数 0

我需要一个与php支持和一些特定的网址重写使用browserSync的能力。我想出了用Gulp-Connect-Php包加上Gulp-Connect + modrewrite的browserSync。下面是我的配置:

代码语言:javascript
复制
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'
 });

})

这工作得很好,完全符合我的需要。当我启动它时,会不时出现以下问题:

代码语言:javascript
复制
[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之前启动,并使用gulp-connect应该使用的端口8010,但gulp-connect无法启动。

在启动browserSync之前,我安装了npm sleep包,并添加了以下行:

代码语言:javascript
复制
sleep.sleep(15)

换句话说,我在启动browserSync之前添加了15秒的延迟。它是有效的,但我打赌还有一个更优雅的解决方案。

请给我建议。

EN

回答 1

Stack Overflow用户

发布于 2017-02-17 09:10:14

gulp-connect在内部包装连接,这将启动节点http服务器。

一旦服务器启动,它就会发出一个名为listening的事件。https://nodejs.org/api/net.html#net_event_listening

代码语言:javascript
复制
    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'
       });
     });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42281597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档