与本地API服务器一起使用'polymer serve'

与本地API服务器一起使用'polymer serve',polymer,lit-element,lit-html,polymer-cli,Polymer,Lit Element,Lit Html,Polymer Cli,我想在开发过程中使用polymer-serve为我的LitElement应用程序提供服务,而不必在每次更改后等待polymer-build完成。但是,该应用程序使用相对URL进行API访问,如GET/API/API_method,并且AFAIK我无法使polymer-service和我的服务器在同一端口上工作(例如localhost:8080) 目前,我运行polymer build,然后运行本地Python服务器,该服务器将polymer文件作为静态文件提供服务 理想的情况是: $ run_m

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

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

理想的情况是:

$ run_my_server.sh --port=8081
$ polymer serve --api_server="localhost:8081"
然后,对于polymer build目录中找到的路由,它们将被服务,否则请求将被路由到
localhost:8081


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

通常,您可以使用代理中间件来完成此操作-但是,polymer server不允许添加您自己的中间件

因此,您有两种选择:

  • 基本上你在做什么,例如,包装聚合物、服务和转发请求
  • 使用支持代理中间件的其他服务器
  • 例如,es-dev服务器

    安装

    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
    
    现在,如果您点击,es-dev服务器将为您提供服务。但是,如果您点击,那么它实际上将从您的api服务器提供服务

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

    您可以在此处找到更多详细信息:


    PS:我是共同维护者

    您是否必须使用相对URL调用API?你不能使用一个绝对的基本url吗?@Umbo这很容易出错-想象一下你在部署之前忘记将它从
    localhost
    更改回来。但这并不能解决主要问题(热重新加载),是吗?我对polymer build的
    工作流很满意,但要查看浏览器中的更改需要两分钟的时间。es-dev-server按原样发送单个文件(仅替换裸模块导入)-将其与标准浏览器缓存和缓存头相结合,允许快速(自动)重新加载。。。试一试,如果速度不够快,让我们知道它的复制品,这样我们就可以看一看:)我认为es开发服务器坏了;我的index.html加载不正确。无论我尝试哪种组合,polymer应用程序都没有加载。如果你认为某个东西坏了,最好打开一个问题并解释如何复制它