【发布时间】:2022-06-14 04:40:58
【问题描述】:
我已经用 Next JS 做了几个 pwa 项目,但是这次我的 site.webmanifest 文件没有加载。当我在浏览器中查看 site.webmanifest 时,我看到它加载了一个带有起始页面的 html 文件。
site.webmanifest:
{
"name": "Task Manager",
"short_name": "Task Manager",
"description": "Application to save tasks",
"display": "standalone",
"start_url": "/",
"icons": [
{
"src": "/icons/manifest-icon-192.maskable.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "/icons/manifest-icon-192.maskable.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/icons/manifest-icon-512.maskable.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "/icons/manifest-icon-512.maskable.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
]
}
_middleware.tsx:
import { NextFetchEvent, NextRequest, NextResponse } from "next/server";
export function middleware(req: NextRequest, event: NextFetchEvent) {
const jwt = req.cookies["jwt"];
const urlArray: Array<string> = req.url.split("/");
const baseUrl = `${urlArray[0]}//${urlArray[2]}`;
if (req.url !== `${baseUrl}/login` && !jwt) {
return NextResponse.redirect(`${baseUrl}/login`);
}
}
链接到 _document.tsx 中的清单
<link rel="manifest" href="/site.webmanifest" />
编辑:我发现发生此错误是因为我在未经身份验证时使用中间件重定向到登录页面。但是我仍然没有解决这个问题,因为我想保留中间件。
【问题讨论】:
-
您的 Next.js 应用中是否有任何重定向设置?
-
你在哪里有 site.webmanifest 文件?
-
@juliomalves 我发现错误的原因是因为我在未经身份验证时使用中间件重定向到登录页面。您知道如何在保持中间件不变的同时修复此错误吗?
标签: next.js progressive-web-apps manifest.json