微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:动态 SSG 页面需要 getStaticPaths,“xxx”缺少 getStaticPaths下一个JS

如何解决错误:动态 SSG 页面需要 getStaticPaths,“xxx”缺少 getStaticPaths下一个JS

当我尝试在 NextJS 中创建我的页面时,我收到此错误 "Error: getStaticPaths is required for dynamic SSG pages and is missing for 'xxx'"

我不想在构建时生成任何静态页面。那么为什么我需要创建一个 'getStaticPaths' 函数

解决方法

如果您正在创建一个动态页面,例如:product/[slug].tsx,那么即使您不想在构建时创建任何页面,您也需要创建一个 getStaticPaths 方法来设置 {{1}属性并让 NextJS 知道当您尝试获取的页面不存在时该怎么做。

fallback

export const getStaticPaths: GetStaticPaths<{ slug: string }> = async () => { return { paths: [],//indicates that no page needs be created at build time fallback: 'blocking' //indicates the type of fallback } } 主要做两件事:

  • 指示应在构建时创建哪些路径(返回 getStaticPaths 数组)

  • 指示当某个页面时要做什么,例如:“product/myProduct123”在 NextJS 缓存中不存在(返回 paths 类型)

,

动态路由下一个 Js

页面/用户/[id].js

import React from 'react'

const User = ({ user }) => {
  return (
    <div className="row">
      <div className="col-md-6 offset-md-3">
        <div className="card">
          <div className="card-body text-center">
            <h3>{user.name}</h3>
            <p>Email: {user.email} </p>
          </div>
        </div>
      </div>
    </div>
  )
}

export async function getStaticPaths() {
  const res = await fetch('https://jsonplaceholder.typicode.com/users')
  const users = await res.json()

  const paths = users.map((user) => ({
    params: { id: user.id.toString() },}))

  return { paths,fallback: false }
}


export async function getStaticProps({ params }) {
  const res = await fetch(`https://jsonplaceholder.typicode.com/users/${params.id}`)
  const user = await res.json()

  return { props: { user } }
}

export default User
,

如果您使用的是 getStaticPaths,则是在告诉 next.js 您想要预生成该页面。但是,由于您在动态页面中使用了它,因此 next.js 事先不知道它必须创建多少个页面。

使用 getStaticPaths,我们获取数据库。如果我们正在渲染博客,我们会获取数据库来决定我们有多少博客,idOfBlogPost 是什么,然后根据这些信息,getStaticPath 将预先生成页面。

此外,getStaticProps 不仅仅在构建期间运行。如果添加 revalidate:numberOfSeconds,next.js 将在“numberOfSeconds”时间后使用新数据重新创建新页面。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?