问题描述
我正在关注an article 使用 next.js 构建动态站点地图。我有一个操作文件夹,我在其中从自定义 API 中提取了所有操作。在这篇文章中,他使用 graphql 来处理动态 URL。但我没有使用 graphql,所以在下面显示的代码中,我从我从数据库中获取所有博客的操作中导入了列表函数。现在我无法提取这些动态 URL。我一定是列表功能有问题。告诉我一种方法,以便我可以从列表中获取动态 URL。
pages/sitemap.xml.js
import React,{useEffect,useState} from "react";
import fs from "fs";
import {list} from '../actions/job'
const Sitemap = () => {};
export const getServerSideProps = async ({ res }) => {
const baseUrl = 'http://localhost:3000'
const staticPages = fs
.readdirsync("pages")
.filter((staticPage) => {
return ![
"_app.js","_document.js","_error.js","sitemap.xml.js",].includes(staticPage);
})
.map((staticPagePath) => {
return `${baseUrl}/${staticPagePath}`;
});
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${staticPages
.map((url) => {
return `
<url>
<loc>${url}</loc>
<lastmod>${new Date().toISOString()}</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
`;
})
.join("")}
//From here the dynamic url functionality starts,Currently it is showing the error list.map is not a function
${list
.map((job) => {
return `
<url>
<loc>${baseUrl}/jobs/${job.slug}</loc>
<lastmod>${job.updatedAt}</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
`;
})
.join("")}
</urlset>
`;
res.setHeader("Content-Type","text/xml");
res.write(sitemap);
res.end();
return {
props: {},};
};
export default Sitemap;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)