2015-10-21 73 views
0

我有一個工作的使用瀏覽器同步的gulp系統,我試圖增加一個代理來允許所有的API調用被重定向到服務器,不幸的是它所做的只是旋轉和不加載任何東西。我之前沒有嘗試過,所以很可能我沒有做對,所以有更多經驗的人可能會發現我出錯的地方。gulp和url rewrite

什麼,我試圖做的是我想簡單

所有呼叫爲localhost:3000 /水星(GET,POST,PUT,補丁,刪除)

需要被重新路由到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(); 
}); 

如果任何人有任何想法,我很想聽到它,或者如果你需要查看整個吞掉文件讓我知道,這是一個工作一飲而盡文件,直到我做了從historyApi添加modRewrite的中間件

這裏的變化是正常工作

gulp.task('browser-sync', function() { 
    browserSync({ 
     server: { 
      baseDir: "../public", 
      middleware: [ historyApiFallback() ] 
     } 
    }); 
}); 

gulp.task('bs-reload', function() { 
    browserSync.reload(); 
}); 

回答

0

我原來一口任務完成了這個並使用gulp和瀏覽器同步計算出了一個很好的整潔解決方案。

對於那些你誰使用這種類型的系統,這裏是需要以下

用於代理您的API

第一添加到您的package.json

"proxy-middleware": "^0.15.0", 
"url": "^0.11.0", 

在你大口文件中的解決方案

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() ] 
     } 
    }); 
});