【问题标题】:NuxtJS routing error: Page not found when navigating to an existing routeNuxtJS 路由错误:导航到现有路由时找不到页面
【发布时间】:2019-10-16 17:55:37
【问题描述】:

刚开始使用 Nuxt,到目前为止我很喜欢它。我只有一个具体问题,我使用 prismic.io 作为我个人页面的无头 CMS。我有几页和一个“博客”页面。导航到博客路线时遇到问题,它返回找不到页面。现在,这有点奇怪,因为它在我的本地主机上运行良好,只是在部署时表现得那样。

网站正在 Netlify 上部署。

我已经尝试切换路线的链接并在我的本地机器上构建项目,它的工作就像魅力一样。

网站链接: https://wonderful-gates-27a024.netlify.com/

这是我的页面文件结构:

Pages/
-- blog/
---- _uid.vue
-- About.vue
-- Blog.vue
-- Contact.vue
-- Works.vue
-- index.vue

复制问题的步骤

  • 导航到关于
  • 导航至联系人
  • 导航到博客(此步骤有时会显示错误)
  • 点击一篇文章
  • 导航回博客(此处应显示未找到)

出现错误后导航回博客的步骤:

我收到页面未找到错误

【问题讨论】:

    标签: vue.js nuxt.js prismic.io


    【解决方案1】:

    我们刚刚发生了这个错误,它是由在 MacOS 机器上将 About.vue 重命名为 about.vue 引起的。

    Git 无法将其识别为新文件,因此当您在 Linux 机器上部署应用时,就会出现问题。

    解决方案是从 Linux 机器上重命名文件,以便 git 识别它。

    您也可以通过将文件从 Blog.vue 重命名为 new-blog.vue 然后再次将其重命名为 blog.vue 来完成此操作。

    这都是因为文件在 MacOS 上不区分大小写,但它们在 linux 上。你会在你拥有的地方看到它:

    <NuxtLink :to="{ name: 'blog' }">
    

    必须是 blog.vue 才能匹配路由名称,因为文件名导致路由名称。在 Linux 上,如果路由是 Blog.vue,爬虫会将路由命名为 "Blog"

    您不希望使用 nuxt 的大写文件名,因为它们会指向诸如 /Blog 之类的 URL。我不建议在您的 pages 目录中使用大写字母。

    【讨论】:

      【解决方案2】:

      我们现在发布了更新的 nuxt-prismic 模块来解决这个动态路由问题并启用预览。您可以按照这篇文章了解如何迁移您的项目: https://prismic.io/docs/vuejs/getting-started/the-new-prismic-nuxt-module

      您还可以在此处看到已启用该模块的项目: https://user-guides.prismic.io/en/articles/2831943-nuxt-js-sample-multi-page-website-with-navigation

      【讨论】:

        【解决方案3】:

        它有时会起作用,因为您正在导航到

        https://wonderful-gates-27a024.netlify.com/blog/
        

        不同
        https://wonderful-gates-27a024.netlify.com/blog
        

        /blog的页面

        https://wonderful-gates-27a024.netlify.com/blog
        

        页面不存在

         https://wonderful-gates-27a024.netlify.com/blog/
        

        存在。这是/blog/_uid

        所以如果你想让它工作,那就做

        Pages/
        -- blog/
        ---- _uid.vue
        ---- index.vue// make this file and the /blog will work
        -- About.vue
        -- Blog.vue
        -- Contact.vue
        -- Works.vue
        -- index.vue
        

        【讨论】:

        • 感谢@ninth-autum 的快速回复。我做了更改,但部署后会发生同样的事情。虽然它在本地主机上工作得很好。我还尝试将Blog.vue移动到blog/并将其名称更改为index.vue,然后在blog/中创建一个_uid目录并添加_uid.vue名称为index.vue,这样它就更有条理了.同样,在 localhost 上完美运行,除非在部署时它不会。最新更改已在暂存链接上:agnelnieves-staging.netlify.com
        • 如果它在您的本地文件中工作而不是在部署之前构建/生成?
        • alos 给我看看你用来链接 about 链接的 nuxt-link,我猜那里有问题。
        • 啊,我想我找到了问题所在。默认情况下,Lol Nuxt 不会生成动态路由(很糟糕)。我必须告诉它生成它们。 参考: nuxtjs.org/guide/commands/#production-deployment 解决后我会检查并更新此线程。再次感谢您的帮助。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-20
        • 2021-08-13
        • 1970-01-01
        • 2019-06-05
        • 2017-09-25
        • 1970-01-01
        • 2018-06-26
        相关资源
        最近更新 更多