在本地API服务器上使用“聚合物服务”

时间:2019-08-12 16:53:03

标签: polymer lit-element lit-html polymer-cli

我想在开发期间使用checker module来服务我的LitElement应用,而不必等待polymer serve在每次更改后完成。但是,该应用程序使用相对URL进行API访问,例如polymer build,并且AFAIK我无法使GET /api/api_method和服务器在同一端口(例如polymer serve)上工作。

当前,我运行localhost:8080,然后运行本地Python服务器,该服务器将Polymer文件作为静态文件提供。

理想的情况是:

polymer build

然后为在聚合物构建目录中找到的路由提供服务,否则,请求将被路由到$ run_my_server.sh --port=8081 $ polymer serve --api_server="localhost:8081"

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

1 个答案:

答案 0 :(得分:1)

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

因此,您有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:我是共同维护人