如何使用自定义快递服务器和 next.js 构建动态站点地图?

问题描述

我正在关注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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...