使用BrowserSync和代理服务器抛出错误吞咽PHP

使用BrowserSync和代理服务器抛出错误吞咽PHP,php,node.js,gulp,http-proxy,browser-sync,Php,Node.js,Gulp,Http Proxy,Browser Sync,在Windows 10上升级/重置后,我不得不重新下载所有开发工具。我似乎无法让我的服务器使用gulp connect php、gulp浏览器同步和http代理。下面的任务实际上来自以下答案: 这是在Yeoman的一代GulpWebApp的基础上开发的。常规的“服务”可以正常工作,但当然不会启动PHP文件。在升级之前,我已经让它工作了,但是现在当我尝试打开URL时,http代理出错,并出现了一个错误。请注意,在我实际转到URL之前不会出错,如果任务设置为不自动打开浏览器,则在转到localhos

在Windows 10上升级/重置后,我不得不重新下载所有开发工具。我似乎无法让我的服务器使用gulp connect php、gulp浏览器同步和http代理。下面的任务实际上来自以下答案:

这是在Yeoman的一代GulpWebApp的基础上开发的。常规的“服务”可以正常工作,但当然不会启动PHP文件。在升级之前,我已经让它工作了,但是现在当我尝试打开URL时,http代理出错,并出现了一个错误。请注意,在我实际转到URL之前不会出错,如果任务设置为不自动打开浏览器,则在转到localhost:3000之前不会出错

你知道这个错误的原因吗

吞咽任务

gulp.task('php-serve', ['styles', 'fonts'], () => {
  phpConnect.server({
    port: 9001,
    base: 'app',
    open: false
  });
  const proxy = httpProxy.createProxyServer({});
  browserSync({
    notify: false,
    open: false,
    port: 9000,
    server: {
      baseDir: ['.tmp', 'app'],
      routes: {
        '/bower_components': 'bower_components'
      },
      middleware: function (req, res, next) {
        var url = req.url;
        if (!url.match(/^\/(styles|fonts|bower_components)\//)) {
          proxy.web(req, res, { target: 'http://127.0.0.1:9001' });
        }
        else {
          next();
        }
      }
    }
  });

  gulp.watch([
    'app/*.html',
    'app/*.php',
    'app/scripts/**/*.js',
    'app/images/**/*',
    '.tmp/fonts/**/*'
  ]).on('change', reload);

  gulp.watch('app/styles/**/*.scss', ['styles']);
  gulp.watch('app/fonts/**/*', ['fonts']);
  gulp.watch('bower.json', ['wiredep', 'fonts']);
});
吞下有错误的运行任务

$ gulp php-serve
[07:30:09] Requiring external module babel-core/register
[07:30:11] Using gulpfile ~\...\gulpfile.babel.js
[07:30:11] Starting 'styles'...
[07:30:12] Starting 'fonts'...
[07:30:12] Finished 'styles' after 1.08 s
[07:30:12] Finished 'fonts' after 306 ms
[07:30:12] Starting 'php-serve'...
[07:30:12] Finished 'php-serve' after 183 ms

[BS] Access URLs:
----------------------------------
Local: http://localhost:9000
External: http://x.x.x.x:9000
----------------------------------
UI: http://localhost:3001
UI External: http://x.x.x.x:3001
----------------------------------
[BS] Serving files from: .tmp
[BS] Serving files from: app

C:\...\node_modules\http-proxy\lib\http-proxy\index.js:119

throw err;
^
Error: connect ECONNREFUSED
at exports._errnoException (util.js:746:11)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)

我想我知道原因

检查您的机器上是否安装了php并将其添加到path变量中

打开命令行并键入:

$ php --version
如果它返回:

sh.exe": php: command not found
这意味着它未安装或不在path变量中

只需安装WAMP/XAMP或MAMP即可安装php

为了确保它在您的路径中,我喜欢使用patheditor

我们需要完成这些简单的步骤 1) 开放路径编辑器 2) 单击“用户”部分中的“添加” 3) 搜索php.exe所在的文件夹。(通常类似于:C:/xampp/php) 4) 再次单击“确定”和“确定”关闭路径编辑器 5) 重新打开命令行工具,您将看到$php--version将找到php.exe


再次尝试运行“吞咽”任务。它应该有用

http代理和/或gulp php connect安装错误。我卸载了它们,清除了npm缓存,并重新安装。从那以后一切都很顺利。

有什么消息吗?我遇到了同样的问题,除了我实现了这个解决方案,但同样的错误是,它在某些情况下(也在windows 10中)可以工作,但在工作时它不工作。它实际上是一个错误的http代理和/或gulp php connect安装。我清除了npm缓存并重新安装,开始工作。很高兴听到你解决了这个问题。我认为您也应该添加您的解决方案作为答案,以便将来其他人可以从中受益。我会把我的留在这里,因为它可能会帮助别人。