在本地 API 服务器上使用 `polymer serve`

Using `polymer serve` with local API server

我想在开发期间使用 polymer serve 为我的 LitElement 应用程序提供服务,而无需等待 polymer build 在每次更改后完成。但是,该应用程序使用相对 URL 进行 API 访问,例如 GET /api/api_method,据我所知,我无法让 polymer serve 和我的服务器在同一端口上工作(例如 localhost:8080) .

目前我 运行 polymer build 然后 运行 我的本地 Python 服务器,它以静态方式提供 Polymer 文件。

理想情况是:

$ run_my_server.sh --port=8081
$ polymer serve --api_server="localhost:8081"

然后对于在聚合物构建目录中找到的路由,它们将被提供,否则请求将被路由到 localhost:8081

是否有任何其他方法可以在每次更改后无需重建整个应用程序的情况下设置本地开发进程?

通常,您会使用代理中间件来执行此操作 - 但是,聚合物服务器不允许添加您自己的中间件。

所以你有两个选择:

  1. 基本上你在做什么,例如包装聚合物服务和转发请求
  2. 使用支持代理中间件的不同服务器

例如 es-dev-server。

安装

npm i -D es-dev-server koa-proxies

创建 es-dev-server.config.js

const proxy = require('koa-proxies');

module.exports = {
  port: 9000,
  middlewares: [
    proxy('/api', {
      target: 'http://localhost:8081',
    })
  ],
};

开始于

es-dev-server --node-resolve

现在,如果您点击 http://localhost:9000 you will be served by the es-dev-server. However, if you hit http://localhost:9000/api,那么它将实际从您的 api 服务器提供服务。

这样做允许在从 api 请求时简单地使用 fetch,因为所有服务都来自相同的域 + 端口。

您可以在此处找到更多详细信息:https://open-wc.org/developing/es-dev-server.html#custom-middlewares-proxy

PS: 我是共同维护者