7

我正在尝试在 Next.JS 中生成一个index.html页面,getStaticPaths但每次我尝试这样做时都会抛出错误或创建一个index目录而不是文件。

到目前为止,我已经尝试过传递'':'/''index'in params.page。我也尝试添加文件trailingSlash: true,next.config但这也不起作用。

[page].js在 pages 目录中有一个文件。有了这个文件,我生成了许多页面,因为该[page].js文件是一个模板文件。我使用这种模板方法是因为有很多共同的组件,每个页面上唯一不同的是“主要内容”。想象一下,生成 10 个页面,每个页面都有相同的导航栏和侧边菜单,但内容(文本)不同。因此,我尝试生成 10 个页面,而其中一个是其中index.html之一,但不是生成.html文件,而是生成一个index目录。我该如何解决这是我的问题?

export const getStaticPaths = async () => {
    return {
        paths: [{
            params: { // Imagine the following code for another 9 pages
                page: 'index' // Only the `index` one has a problem (creates a directory instead of file)
            }
        }]
    };
}

如果我传递除indexin之外的任何其他字符串,params.page它将创建一个[my_string].html页面。我希望能够index.html使用 next.js 的getStaticPaths方法创建一个页面。

4

1 回答 1

0

答案可能有点晚了,但 NextJS 添加了一个可选的 catch all routes。

您现在可以使用两个括号来命名您的页面[[...slug]]

在获取静态道具params时将是一个空对象并且没有 slug 属性,因此您可以进行以下检查:


export const getStaticProps: GetStaticProps<{ data: PageData }> = async ({ params }) => {
  const homePage = !!!params.url;

  // now do your logic if the page is the home.
 

请在这里检查我的问题:

https://github.com/vercel/next.js/discussions/34311#discussioncomment-2178744

于 2022-02-15T07:27:14.110 回答