javascript 用Apache实现Nuxt错误处理函数

9o685dep  于 2023-02-02  发布在  Java
关注(0)|答案(1)|浏览(139)

试着学习Nuxt,一些酒和一些水,就像瑞典谚语说的那样。
我得到了一些错误处理的问题,当我建立应用程序(在开发中没有问题)。看起来它不生活那么好与Apache和它的htaccess文件。这是我的htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

基本错误处理函数(错误. vue在网站根),例如,如果我去http://nuxtshop.localhost/xyz/zyz,它触发。但它的错误与createError函数没有触发正确,它只是重定向到主页,然后我得到一个空白页面(实际上是默认的. vue布局,没有填充插槽)。举个例子,我有一个产品页面,上面有这个代码,如果产品不存在(url,iidoE. params不存在),我会尝试处理。
脚本:

<script setup>
 const { id } = useRoute().params;
 const runtimeConfig = useRuntimeConfig()
 const uri =`${runtimeConfig.public.apiUrl}/api/content/item/Products/${id}`
 const { data: product } = await useFetch(uri, {
 method: "GET",
 key: id,
 })
 if (!product.value) {
 throw createError({ statusCode: 404, statusMessage: "Procuct not found 
 (shop id)" })
 }
 </script>

编辑:猜这是相同的问题,因为这个主题:https://github.com/nuxt/nuxt/issues/15432

xuo3flqw

xuo3flqw1#

我自己想出来的。删除了htaccess文件中的最后一行。还必须在createError(如果不是空白页)上执行 fatal:true。htaccess中的更改删除了文档最后(页脚后)有趣的populating off错误消息。声明一下,这是没有app.vue的配置(默认为Nuxt),和Nuxt 3。
它还可以使用函数 showError(似乎更快)。
最后的htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
</IfModule>
ErrorDocument 404 /404.html

和错误处理备选方案:

throw createError({statusCode: 404, statusMessage: "Page 
 not found.", fatal:true})

矿石:

showError({statusCode: 404, statusMessage: "Page not 
 found."})

我不是Apache的Maven,但是现在Nuxt在内置模式下的htaccess函数,但是如果其他人有评论,请随意发帖!

相关问题