vue.js - nuxt 为动态页面 nuxt.js 生成抛出错误

标签 vue.js vuejs2 nuxt.js

我似乎无法弄清楚这里的问题是什么......

我现在在我的 nuxt.config.js 中使用 nuxt.js 创建了一个分页博客,我有一个方法可以像这样从 contentful 中获取帖子

const getBlogPosts = async () => {
  let blogPosts = await client.getEntries({ order: '-sys.createdAt', limit: 1000, content_type: config.CTF_BLOG_POST });
  return blogPosts;
};

然后当我生成路由时,我会执行以下操作...

generate: {
    routes: async () => {
      const posts = await getBlogPosts();
      const routes = [];
      let postsNum = Math.ceil(posts.items.length / 10); // get the page numbers
      for (let i = 1; i <= postsNum; i++) {
        routes.push({
          route: '/page/' + i,
          payload: {
            data: posts.items.splice(i === 1 ? 0 : i * 10, 10)
          }
        });
      }
      return routes;
    }
  },

然后在我的 _page/index.vue

enter image description here

<script>
export default {
    components: {
     //...
    },
    aysnc asyncData(context) {
        if(context.payload) {
            return {
                blogPosts: context.payload.data.items.slice(0, 8)
            }
        } else {
            //...
        }
    }
}
</script>

现在,当我在本地运行这个页面时,页面工作正常,没有错误等。但是在 nuxt generate 上,我得到了

错误:生成/page/1 时出错

现在我已经尝试 console.log() mounted() 上的 blogPosts 但它永远不会触发。

我不知道这里出了什么问题,我试图剥离所有内容并使我的 _page/index.vue 看起来像这样

<template>
    <div>
        <h1>hello</h1>
    </div>
</template>

<script>
export default {

}
</script>

<style>

</style>

但我仍然收到生成错误我有 console.log() 路由并且我得到了这个

[                                                                                                 11:39:44  
  {
    route: '/page/1',
    payload: {
      data: [Array]
    }
  }
]

看起来是对的,为什么页面会出错??

编辑1

当我检查我的 dist 文件夹时,页面 1 index.html 在那里,但在 html 中它说 找不到此页面

任何帮助将不胜感激,或者有没有办法获得更好的错误消息

编辑2

我所有的个人博客页面都正确构建,但实际/page/1 是唯一失败的页面我已经 try catch 整个异步生成方法并且没有错误..如果我安慰。记录所有看起来好像都是正确的路线

[                                                                                                 08:58:38
  {
    route: '/blog/6gQUEUwex7mjNtAXY4ZlTO',
    payload: {
      data: [Object]
    }
  },
  {
    route: '/blog/2xDAv0zSt4kUfxOV1XC98C',
    payload: {
      data: [Object]
    }
  },
  {
    route: '/blog/6f6shGDflvuBUMZn25sIbE',
    payload: {
      data: [Object]
    }
  },
  {
    route: '/blog/24Sov29BazGj52WEQdJGiy',
    payload: {
      data: [Object]
    }
  },
  {
    route: '/blog/r2ky97Vg8u6rouiVXdSzd',
    payload: {
      data: [Object]
    }
  },
  {
    route: '/blog/2QnIl7GOScQ31A7EcRVgT1',
    payload: {
      data: [Object]
    }
  },
  {
    route: '/blog/1bEUOT5Xnm7CU9Njd5xkeu',
    payload: {
      data: [Object]
    }
  },
  {
    route: '/blog/7FUON1DcQcGQnvdp7Kxfbe',
    payload: {
      data: [Object]
    }
  },
  {
    route: '/page/1',
    payload: {
      data: [Array]
    }
  }
]

所有其他页面都正确生成

最佳答案

我是个白痴..

需要生成的路由是/blog/page/1而不是/page/1

所以我更新了这个

for (let i = 1; i <= postsNum; i++) {
  routes.push({
    route: '/blog/page/' + i,
    payload: {
      data: posts.items.splice(i === 1 ? 0 : i * 10, 10)
    }
  });
}

修复后.. 构建正确!

确保三重检查您生成的路线名称...

关于vue.js - nuxt 为动态页面 nuxt.js 生成抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56927438/

相关文章:

javascript - Vue.js 销毁在组件内运行的 setInterval

javascript - VueJS - 如何从父 v-for 调用子组件上的事件

javascript - 我可以让一个属性在 vue v-for 中只出现一次吗

vue.js - 在 Vue 组件中使用 @use "sass:math"

javascript - Safari 不会按时触发选择元素上的点击事件

vue.js - 如何修复此错误 [Vue 警告] : Unknown custom element: <nuxt-link> in unit testing with Jest

vue.js - vuejs如何从iframe获取src

javascript - 以编程方式实例化 vuetify-components

javascript - 每当我使用 axios 向后端 API 发出 GET 请求时,Vue.js 应用程序都在 http ://localhost:8080, 上运行,本地主机被添加到 URL

webpack - 将 gsap 与 nuxtjs 一起使用