我有一个使用浏览器同步的工作 gulp 系统,我也尝试添加一个代理以允许将所有 API 调用重定向到服务器,不幸的是它的所有操作都是旋转并且不加载任何内容。我以前没有尝试过,所以很可能我做得不对,所以有更多经验的人可能能够发现我哪里出错了。
我想做的是我认为简单的事情
对 localhost:3000/Mercury 的所有调用(获取、发布、放置、修补、删除)
需要重新路由到http://angular.dev.europa-sports.net:80/Mercury
这是浏览器同步服务器部分的代码
gulp.task('browser-sync', function () {
browserSync({
server: {
baseDir: "../public",
middleware: function () {
return [
modRewrite([
'^/Mercury/(.*)$ http://angular.dev.europa-sports.net:80/Mercury/$1 [P]'
])
];
}
}
});
});
gulp.task('bs-reload', function () {
browserSync.reload();
});
如果有人对此有任何想法,我很想听听,或者如果您需要查看整个 gulp 文件,请告诉我,这是一个有效的 gulp 文件,直到我进行更改以从中间件上的 HistoryApi 添加 modRewrite
这是正确工作的原始 gulp 任务
gulp.task('browser-sync', function() {
browserSync({
server: {
baseDir: "../public",
middleware: [ historyApiFallback() ]
}
});
});
gulp.task('bs-reload', function () {
browserSync.reload();
});
最佳答案
我已经完成了这个工作,并使用 gulp 和 browser-sync 找到了一个很好的简洁解决方案。
对于那些使用此类系统的人,这里是代理 api 的解决方案
首先将其添加到您的 package.json
"proxy-middleware": "^0.15.0",
"url": "^0.11.0",
在你的 gulp 文件中需要以下内容
Proxy = require('proxy-middleware'),
url = require('url'),
然后您的浏览器同步任务应如下所示,这将允许您在本地代理传入/api 的任何内容以转到 server.com/api 的目标目的地 无需配置 CORS 解决方案。
这意味着您无需更改代码即可从本地转移到开发。
gulp.task('browser-sync', function() {
var proxyOptions = url.parse('http://www.server.com/api');
proxyOptions.route = '/api';
browserSync({
server: {
baseDir: "../public",
middleware: [ Proxy(proxyOptions), historyApiFallback() ]
}
});
});
关于node.js - gulp 和 url 重写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33266011/