webpack-dev-server与后端api

我正在使用一个angularjs应用程序的webpack-dev-server,我从package.json中的一个任务开始,如下所示:

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

我有一个后端api服务器使用koa,并在同一个端口上运行:

 const koa = require('koa'); app.listen(5000); module.exports.app; 

当koa服务器启动时,它拦截所有的请求,我不能浏览angular度浏览器的应用程序。

我应该服从koa的一切还是有办法让这两个人一起工作?

是的,你可以用你自己的后端API来使用webpack-dev-server。 有两种方法可以做到这一点:

首先,您可以configuration开发服务器以使用代理 。 这是我使用的解决scheme,它适用于我。 我的configuration看起来像这样:

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

这种configuration可以确保以“/ api”开头的所有请求都被发送到后端API服务器(在这种情况下,在localhost:8080上运行),而不是开发服务器。 可选地,如果你需要的话,你可以用一个函数绕开代理,如下所示:

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

但我从来没有需要使用这个,因为“/ api / *”键是我需要确保每个请求被发送到正确的服务器。

重要的是,你应该有两个服务器运行在不同的端口。 我通常在后端使用8080,开发服务器使用9090。

还有另一种方法可以做到这一点,但我不太熟悉它。 我从来没有亲自使用它,因为代理选项似乎不那么复杂,它的工作原理。 但是你可以在这里阅读,以防万一你发现代理选项不适合出于某种原因。