我想在开发过程中使用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
。
是否有其他方法可以在每次更改后无需重新构建整个应用程序即可设置本地开发过程?
通常,您将使用代理中间件执行此操作 - 但是,聚合物服务器不允许添加您自己的中间件。
所以你有两个选择:
- 基本上你在做什么,例如包装聚合物服务和转发请求
- 使用支持代理中间件的其他服务器
例如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:我是共同维护者