als*_*kaa 27 api proxy middleware gulp browser-sync
我正在尝试使用gulp和browser-sync重定向我的API请求:
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)]
}
});
});
Run Code Online (Sandbox Code Playgroud)
但是当我向API发送一个调用时,我得到了这个响应:
Error: connect ECONNREFUSED
at errnoException (net.js:904:11)
at Object.afterConnect [as oncomplete] (net.js:895:19)
Run Code Online (Sandbox Code Playgroud)
关于我做错了什么的任何想法?
MLM*_*MLM 48
查看有关使用BrowserSync和Gulp的官方文档.我能够使用代理启动BrowserSync并且/api没有问题.
检查以确保没有其他东西在使用端口8000.port初始化BrowserSync时,可以通过该选项更改BrowserSync使用的端口.
这是gulpfile.js我最终得到的:
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/x/y/z`
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']);
Run Code Online (Sandbox Code Playgroud)
如果您不想单独执行gulp任务来重新加载/流式更改,可以使用以下files选项:
browserSync({
open: true,
port: 3000,
server: {
baseDir: "./",
middleware: [proxy(proxyOptions)]
},
files: paths.css
});
Run Code Online (Sandbox Code Playgroud)
chi*_*rai 12
我在使用gulp + browser-sync + proxy-middleware设置时遇到了同样的问题,同时从grunt迁移到gulp.
Error: connect ECONNREFUSED
at errnoException (net.js:904:11)
at Object.afterConnect [as oncomplete] (net.js:895:19)
Run Code Online (Sandbox Code Playgroud)
在我的情况下,公司网络中的某些东西不允许代理中间件工作.我刚进入公共网络时,问题就消失了.
使用grunt-connect + grunt-connect-proxy,我可以在公司网络中代理文件而不会出现任何问题.
proxy-middleware实现了自己的代理功能,而grunt-connect-proxy使用http-proxy来完成实际的代理工作.
我最终在http-proxy周围编写了一个小型中间件包装器,用于浏览器同步和连接,解决了企业网络中的代理问题.
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]
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37562 次 |
| 最近记录: |