8

参考文档,我添加layouts/error.vue了页面处理错误。在开发中测试这个(npm run dev),一切都按预期工作。但是当我这样做时npm run buildnpm start当我测试在生产中抛出异常时,不会呈现错误页面。

我正在使用SSR,但我在文档中没有看到任何建议不适layouts/error.vue用于SSR或通用网站的内容。报告了一个类似的问题。该人为他们的用例做了一个工作。但是问题(主要错误处理程序被忽略,异常最终记录到控制台而不是呈现错误页面)没有得到解决。

throw new Error()在开发中,如果我在单击按钮时抛出测试错误,则会显示错误页面。但是在生产中,错误只是转到控制台并且不会呈现错误页面。在不更改许多其他代码的情况下,我可以让它在生产中工作的唯一方法是设置debug: true.nuxt.config.js

另请注意,error.vue对于 404 页面,它在生产中也能完美运行。throw new Error但是,如果我从一个组件进行生产构建,它就不会像在开发中那样工作。

您可以通过使用npm create nuxt-app <app name>. 以下是我选择的设置: 在此处输入图像描述

将以下内容添加到layouts/error.vue

<template>
  <div>
    <h1>You are in layouts/error.vue</h1>
    <h1 v-if="error.statusCode === 404">Page not found</h1>
    <h1 v-else>An error occurred</h1>
    <pre v-if="error.statusCode !== 404">{{ error }}</pre>
    <nuxt-link to="/">Click to visit Home page</nuxt-link>
  </div>
</template>

<script>
export default {
  props: {
    error: {
      type: [Object, Error],
      default: () => {},
    },
  },
  layout: 'blog', // you can set a custom layout for the error page
}
</script>

然后添加<button @click="throwE">Click to throw error</button>components/Logo.vue添加以下脚本到页面:

<script>
export default {
  methods: {
    throwE() {
      throw new Error('Error thrown by button click')
    },
  },
}
</script>

单击开发中的按钮,它按预期工作。单击生产中的按钮并且error.vue不呈现。

文档错了吗?这是一个错误吗?为什么error.vue在开发过程中可以按预期工作,但在抛出错误时却不能在生产构建中工作?

4

1 回答 1

-3

我怀疑您的问题可以通过将以下内容添加到您的 nuxt.config.js 文件来解决:

generate: {
    fallback: "404.html"
},

或者:

generate: {
    fallback: true
  }

以下网页讨论了您的问题和解决方案:

https://nuxtjs.org/faq/netlify-deployment#how-to-deploy-on-netlify-

https://dev.to/debs_obrien/when-netlify-gives-you-that-404-page-4561

https://github.com/nuxt/nuxt.js/issues/966

于 2020-11-02T19:24:05.020 回答