gpt4 book ai didi

javascript - 未捕获的语法错误 : Identifier 'baseUrl' has already been declared

转载 作者:数据小太阳 更新时间:2023-10-29 04:19:00 25 4
gpt4 key购买 nike

我有一个使用 Firebase 托管部署的 Polymer webapp。

View 之间的路由有效,但错误页面处理无效。

我使用官方的 polymer-2-starter-kit 示例成功地在最小示例中重现了该问题:

https://fir-polymer-404-issue.firebaseapp.com/

例如,如果您打开以下网址,则不会显示错误页面:

https://fir-polymer-404-issue.firebaseapp.com/not-existing

相反,我收到以下错误:

my-not-existing.html:56 Uncaught SyntaxError: Identifier 'baseUrl' has already been declared
at my-not-existing.html:56
(anonymous) @ my-not-existing.html:56

用于上一个示例的配置文件 firebase.json 在这里:

{
"hosting": {
"public": ".",
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}
}

我希望由 Polymer 进行错误页面处理。

请注意,由 polymer serve 提供的同一应用程序可以正常工作。

问题似乎出在 Firebase 托管配置上。所有流量都被重定向到 index.html,因此当 Polymer 加载一个不存在的页面时,Firebase 服务器返回一个 HTTP 200 响应。不幸的是,我不知道如何解决这个问题。

我尝试仅使用以下配置文件为非 404 响应创建重定向:

{
"hosting": {
"public": ".",
"redirects": [
{
"source": "**",
"destination": "/index.html",
"type": 200
}
]
}
}

不幸的是,type 属性只能用于 3xx 代码:

Error: HTTP Error: 400, hosting.redirects[0].type is not one of enum values: 301,302,303,304,305,307,308

另请注意,自定义 404.html 文件为 placed at the root .

我看到的唯一解决方案是列出所有现有路由(每个文件),但它看起来很疯狂。

欢迎任何想法。

最佳答案

firebase 或 polymer 都无法处理您的 404 的原因page 是当你请求一个不存在的页面时,它不仅会返回状态代码 200但它也会返回 index 的 HTML页面,所以它会显示一些东西,虽然那东西真的没什么。

现在 polymer 的设置方式是在 src 中查找 View 文件夹,因此您只想在根目录而不是 src 中重写文件夹。所以改变你的firebase.json成为

{
"hosting": {
"public": ".",
"rewrites": [{
"source": "/*",
"destination": "/index.html"
}]
}
}

*将意味着文件而不是子文件夹,如果您在地址栏中输入它,这将允许您的路由工作,但如果找不到该页面 404将由 polymer 路由处理。例如,我使用 polymer 入门包设置了一个 Firebase 应用程序。

https://testforsoissue.firebaseapp.com/view2

会工作,会带你到view2因为初始请求将被重写以返回 index.html 但对 /src/my-view2.html 的请求不会

而未定义的路由

https://testforsoissue.firebaseapp.com/not-existing

将抛出 404(在 polymer 中),因为初始请求将再次被重写以返回 index.html但是请求/src/my-not-existing.html不会并且会很乐意抛出 404!

附言错误原因'baseUrl' has already been declared'是因为页面使用了 index.html 两次,它在顶部声明了 baseUrl

编辑

如果你有子路径,你可以使用 firebase.json像这样

{
"hosting": {
"public": ".",
"rewrites": [{
"source": "!/src/*",
"destination": "/index.html"
}]
}
}

关于javascript - 未捕获的语法错误 : Identifier 'baseUrl' has already been declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44420402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com