如何使用站点地图包在下一个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,
  });
});