参考文档,我添加layouts/error.vue
了页面处理错误。在开发中测试这个(npm run dev
),一切都按预期工作。但是当我这样做时npm run build
,npm 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
在开发过程中可以按预期工作,但在抛出错误时却不能在生产构建中工作?