1

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

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

理想的情况是:

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

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

是否有任何其他方法可以设置本地开发流程,而无需在每次更改后重新构建整个应用程序?

4

1 回答 1

2

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

所以你有2个选择:

  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,es-dev-server 将为您提供服务。但是,如果您点击http://localhost:9000/api那么它实际上会从您的 api 服务器提供服务。

这样做允许在从 api 请求时简单地使用 fetch,因为所有这些都从同一个域 + 端口获得服务。

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

PS:我是共同维护者

于 2019-08-18T17:13:55.860 回答