usar plugin notification debug como browsersync api proxy gulp middleware browser-sync

api - plugin - browsersync gulp port



Gulp browser-sync: redirige la solicitud de la API a través del proxy (2)

Consulte la documentación oficial sobre el uso de BrowserSync con Gulp . Pude poner en marcha BrowserSync con un proxy en /api sin problemas.

Compruebe para asegurarse de que nada más está utilizando el puerto 8000 . Puede cambiar el puerto que utiliza BrowserSync a través de la opción de port al inicializar BrowserSync .

Aquí está el gulpfile.js que terminé:

npm install gulp url proxy-middleware browser-sync --save-dev

// Include gulp var gulp = require(''gulp''); var url = require(''url''); var proxy = require(''proxy-middleware''); var browserSync = require(''browser-sync''); var paths = { css: [''./**/*.css'', ''!./node_modules/**/*''] }; // browser-sync task for starting the server. gulp.task(''browser-sync'', function() { var proxyOptions = url.parse(''http://localhost:3000/secret-api''); proxyOptions.route = ''/api''; // requests to `/api/x/y/z` are proxied to `http://localhost:3000/secret-api` browserSync({ open: true, port: 3000, server: { baseDir: "./", middleware: [proxy(proxyOptions)] } }); }); // Stream the style changes to the page gulp.task(''reload-css'', function() { gulp.src(paths.css) .pipe(browserSync.reload({stream: true})); }); // Watch Files For Changes gulp.task(''watch'', function() { gulp.watch(paths.css, [''reload-css'']); }); // Default Task gulp.task(''default'', [''browser-sync'', ''watch'']);

Si no desea hacer una tarea de trago separada para volver a cargar / transmitir los cambios, puede usar la opción de files :

browserSync({ open: true, port: 3000, server: { baseDir: "./", middleware: [proxy(proxyOptions)] }, files: paths.css });

Estoy intentando redirigir mis solicitudes de API de esta manera con gulp y sincronización de navegador:

gulp.task(''browser-sync'', function () { var files = [ ''../index.html'', ''../views/**/*.html'', ''../assets/css/**/*.css'', ''../assets/js/**/*.js'' ]; var url = require(''url''), proxy = require(''proxy-middleware''); var proxyOptions = url.parse(''http://localhost:8000/api''); proxyOptions.route = ''/api''; browserSync.init(files, { server: { baseDir: ''..'', middleware: [proxy(proxyOptions)] } }); });

Pero recibo esta respuesta cuando se envía una llamada a la API:

Error: connect ECONNREFUSED at errnoException (net.js:904:11) at Object.afterConnect [as oncomplete] (net.js:895:19)

¿Alguna idea de lo que estoy haciendo mal?


Me encontré con el mismo problema con la configuración gulp + browser-sync + proxy-middleware, mientras migraba de gruñido a trago.

Error: connect ECONNREFUSED at errnoException (net.js:904:11) at Object.afterConnect [as oncomplete] (net.js:895:19)

En mi caso, algo dentro de la red corporativa que no permitía que el proxy-middleware funcionara. Tan pronto estuve en la red pública, el problema desapareció.

Con grunt-connect + grunt-connect-proxy pude proxy archivos dentro de la red corporativa sin ningún problema.

proxy-middleware implementa su propia funcionalidad de proxy, mientras que grunt-connect-proxy usa http-proxy para hacer el trabajo de proxy real.

Terminé escribiendo un pequeño envoltorio de middleware alrededor de http-proxy para ser utilizado en la sincronización del navegador y en la conexión, lo que resolvió los problemas del proxy en la red corporativa.

https://www.npmjs.com/package/http-proxy-middleware

var browserSync = require(''browser-sync''); var proxyMiddleware = require(''http-proxy-middleware''); var proxy = proxyMiddleware(''/ajax'', {target: ''http://cdnjs.cloudflare.com''}); browserSync({ server: { baseDir: "./", port: 3000, middleware: [proxy] } });