2016-02-21 15 views
6

Używam WebPACK-dev-serwer dla angularjs aplikacji, zacznę go od zadania w package.json tak:WebPack-dev-serwer z zaplecza api

"scripts": { 
    "start-api": "node api/server.js", 
    "dev": "webpack-dev-server --env dev --history-api-fallback --inline --progress --port 5000", 
    "start": "npm run dev" 
    }, 

Mam serwer backend api który wykorzystuje KOA i działa na tym samym porcie:

const koa = require('koa'); 

app.listen(5000); 

module.exports.app; 

Gdy serwer KOA jest uruchomiona, to przechwytuje wszystkie żądania i nie mogę przejść do kątowego aplikacji przeglądarki.

Czy powinienem podawać wszystko od koa, czy jest jakiś sposób, aby te dwie współpracowały ze sobą?

Odpowiedz

8

Tak, możesz użyć webpack-dev-server z własnym API zaplecza. Można to zrobić na dwa sposoby:

Najpierw można skonfigurować serwer dev do korzystania z proxy. To jest rozwiązanie, którego używam i działa dobrze dla mnie. Moja konfiguracja wygląda tak:

proxy: { 
    "/api/*": { 
    target: "http://localhost:8080" 
    } 
} 

Taka konfiguracja zapewnia, że ​​wszystkie wnioski rozpoczynające się od „/ API” są wysyłane do serwera backend API (działa na localhost: 8080 w tym przypadku), raczej niż dev-serwer . Ewentualnie, jeśli trzeba, można ominąć proxy z funkcją, tak:

proxy: { 
    "/api/*": { 
    target: "http://localhost:8080", 
    bypass(req, res) { 
     return (/* some condition */) ? '/index.html' : false; 
    } 
    } 
} 

Ale nigdy nie musiał korzystać z tego, skoro „/ api/*” klucz jest wszystko, czego potrzeba, aby zapewnić każde żądanie jest wysyłane na właściwy serwer.

Co ważne, powinieneś mieć dwa serwery działające na różnych portach. Zwykle używam 8080 dla mojego zaplecza i 9090 dla serwera dev.

Powiązane problemy