如何使用站点地图包在下一个js中生成动态站点地图?
How to generate dynamic sitemap in next js with sitemap package?
我正在为我的 Web 应用程序使用 next js 和 back4app。我偶然发现 sitemap
库来编写站点地图,但我根本无法创建动态站点地图。我无法 运行 任何 api 调用或云代码,我有一个特定的功能可以 return 所有路由,以便我可以通过管道传输它们。下面是我的示例代码:
import { SitemapStream, streamToPromise } from "sitemap";
const {Readable} = require("stream");
import cacheData from 'memory-cache';
import { initializeParse } from '@parse/react-ssr';
initializeParse(
'https://parseapi.back4app.com',
'********************',
'*********************'
);
const sitemap = async (req,res) => {
try{
const links = [
{ url: "/blogggy", changefreq: "daily", priority: 0.3 },
];
const userParams = {
authKey: "***********************"
}
Parse.Cloud.run("getAllRoutes",userParams).then(response =>{
response.map((handle) => {
links.push({
url: `/${handle}`,
changefreq: "daily",
priority: 0.9,
});
})
}).catch(e =>{
res.send(JSON.stringify(e));
})
const pages = ["/explore"];
pages.map((url) => {
links.push({
url,
changefreq: "daily",
priority: 0.9,
});
});
const stream = new SitemapStream({hostname: `https://${req.headers.host}`}) ;
res.writeHead(200,{
"Content-Type": "application/xml",
});
const xmlString = await streamToPromise(
Readable.from(links).pipe(stream)
).then((data) => data.toString());
res.end(xmlString);
}
catch(e){
console.log(e);
res.send(JSON.stringify(e));
}
};
export default sitemap
我也尝试了 getServerSideProps 但它没有用。我该如何解决这个问题?
同样,我不确定这是否是您的代码的唯一问题,但请尝试将云代码函数调用重写为如下内容:
let response;
try {
response = await Parse.Cloud.run("getAllRoutes",userParams);
}
catch (e) {
res.send(JSON.stringify(e));
return;
}
response.map((handle) => {
links.push({
url: `/${handle}`,
changefreq: "daily",
priority: 0.9,
});
});
我正在为我的 Web 应用程序使用 next js 和 back4app。我偶然发现 sitemap
库来编写站点地图,但我根本无法创建动态站点地图。我无法 运行 任何 api 调用或云代码,我有一个特定的功能可以 return 所有路由,以便我可以通过管道传输它们。下面是我的示例代码:
import { SitemapStream, streamToPromise } from "sitemap";
const {Readable} = require("stream");
import cacheData from 'memory-cache';
import { initializeParse } from '@parse/react-ssr';
initializeParse(
'https://parseapi.back4app.com',
'********************',
'*********************'
);
const sitemap = async (req,res) => {
try{
const links = [
{ url: "/blogggy", changefreq: "daily", priority: 0.3 },
];
const userParams = {
authKey: "***********************"
}
Parse.Cloud.run("getAllRoutes",userParams).then(response =>{
response.map((handle) => {
links.push({
url: `/${handle}`,
changefreq: "daily",
priority: 0.9,
});
})
}).catch(e =>{
res.send(JSON.stringify(e));
})
const pages = ["/explore"];
pages.map((url) => {
links.push({
url,
changefreq: "daily",
priority: 0.9,
});
});
const stream = new SitemapStream({hostname: `https://${req.headers.host}`}) ;
res.writeHead(200,{
"Content-Type": "application/xml",
});
const xmlString = await streamToPromise(
Readable.from(links).pipe(stream)
).then((data) => data.toString());
res.end(xmlString);
}
catch(e){
console.log(e);
res.send(JSON.stringify(e));
}
};
export default sitemap
我也尝试了 getServerSideProps 但它没有用。我该如何解决这个问题?
同样,我不确定这是否是您的代码的唯一问题,但请尝试将云代码函数调用重写为如下内容:
let response;
try {
response = await Parse.Cloud.run("getAllRoutes",userParams);
}
catch (e) {
res.send(JSON.stringify(e));
return;
}
response.map((handle) => {
links.push({
url: `/${handle}`,
changefreq: "daily",
priority: 0.9,
});
});