使用基本URL在Web服务器上托管Polymer应用程序

时间:2017-01-23 10:58:22

标签: polymer polymer-1.0 relative-path polymer-starter-kit

如果我使用Polymer starter kit,它在本地运行良好。 我可以导航到http://localhost:8080/,所有3个视图的链接都可以正常工作。

现在,如果我在诸如http://myservername:8080/mywonderfulapp/之类的网址上的网络服务器(与其他应用共享)上托管此应用,我就会遇到路由问题。有没有办法可以提到app-route来获取相对URL?

我尝试更改html文件以获得相对网址

<link rel="import" href="./src/my-app.html">
<a name="view1" href="./view1">View One</a>
<base href="/mywonderfulapp/">

但我似乎无法以类似的方式修复app-routing。

关于SO的所有类似问题似乎都是关于Polymer的1.0之前的版本,并提及page.js和hash-bang路由,而不是HTML5历史友好的URL和app-route组件。

我更愿意进行最少的代码更改以确保

  • 相同的代码在本地以及远程主机上运行
  • 该应用程序不依赖于托管它的基本URL - 因此,我最好不要提及&#34; mywonderfulapp&#34; (来自上面的URL)代码中的任何位置。

2 个答案:

答案 0 :(得分:2)

到目前为止,我最接近的是:

在app-route模式中提及URL前缀的占位符。

<app-route
    route="{{route}}"
    pattern="/:prefix/:page"
    data="{{routeData}}"
    tail="{{subroute}}"></app-route>

然后在锚点的href属性中使用它

<a name="view1" href="/[[routeData.prefix]]/view1">View One</a>
<a name="view2" href="/[[routeData.prefix]]/view2">View Two</a>
<a name="view3" href="/[[routeData.prefix]]/view3">View Three</a>

这种方法的缺点是,即使在本地工作,我也必须将URL用作http://localhost:8080/mywonderfulapp/,但至少在部署到我的远程Web服务器时我不必再修改代码。

答案 1 :(得分:0)

正如评论中所述,这已在stackoverflow.com/questions/39608956/polymer-error-on-reload ing上的类似帖子中解决了

firebase用户的附注 - 如果您将相同版本的入门工具包部署到firebase并在CLI上执行firebase服务,则此问题甚至会发生在localhost中,因此您将需要上述修复,即使是在那里也是如此。