I'm trying to redirect my API requests like this with gulp and browser-sync:
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)]
}
});
});
But I get this response when a call is sent to the API:
Error: connect ECONNREFUSED
at errnoException (net.js:904:11)
at Object.afterConnect [as oncomplete] (net.js:895:19)
Any idea on what I'm doing wrong?
Checkout the official documentation about using BrowserSync with Gulp. I was able to get BrowserSync up and running with a proxy on
/api
with no issue.Check to make sure nothing else is using port
8000
. You can change what port BrowserSync uses via theport
option when initializing BrowserSync.Here is the
gulpfile.js
I ended up with:npm install gulp url proxy-middleware browser-sync --save-dev
If you do not want to make a separate gulp task to reload/stream the changes, you can use the
files
option:I ran into the same issue with the gulp + browser-sync + proxy-middleware setup, while migrating from grunt to gulp.
In my case something within the corporate network which didn't allow proxy-middleware to work. As soon I was on the public network, the issue was gone.
With grunt-connect + grunt-connect-proxy I could proxy files within the corporate network without any problems.
proxy-middleware implements its own proxy functionality, while grunt-connect-proxy uses http-proxy to do the actual proxy work.
I ended up writing a small middleware wrapper around http-proxy to be used in browser-sync and connect, which solved the proxy issues in the corporate network.
https://www.npmjs.com/package/http-proxy-middleware