Я создал error.vue в каталоге макета, и он работает почти правильно, но если путь имеет точку, например (http://localhost:3000/for.m), я вижу «Cannot GET/PATH» вместо моей пользовательской страницы ошибок. Не могу ПОЛУЧИТЬ/ПУТЬ
Если я изменю цель файла nuxt.config.js на «сервер», эта проблема исчезнет, но добавлю новые проблемы в путь (http://localhost:3000/_nuxt/), я увижу сообщение 404 по умолчанию из браузера вместо моей пользовательской страницы ошибок и на самом деле мне нужен целевой статический.
Сейчас я не могу исправить это с помощью настроек Nuxt, или я должен написать собственный обработчик ошибок.
может ли кто-нибудь помочь мне с этой проблемой. Спасибо за вашу помощь!
Я нашел в nuxt github аналогичный запрос https://github.com/nuxt/nuxt.js/issues/8715 где кто-то пишет, что это не баг, а особенности статического приложения nuxt. Либо вы отказываетесь от этого, либо меняете «статический» на «сервер». Я выбираю второй способ, с ошибкой, когда браузер пути _nuxt возвращает сообщение 404 по умолчанию, исправил его следующим образом:
в nuxt.config добавлено
build: {
publicPath: 'store', // changed '_nuxt' way to 'store'
}
serverMiddleware: ['~/server-middleware/errorhandler'], // added middleware for handling error before render page
в server-middleware/errorhandler.js
import { readFileSync } from 'node:fs';
export default function (req, res, next) {
// if it's a stuff path for take
if (decodeURI(req.url).match(//_ipx.*/) || decodeURI(req.url).match(//store.*/)) {
// try to find file
try { // if the file is found, show it
readFileSync('static/'+ req.url.match(/img.*/)[0])
next()
} catch (error) { // if the file hasn't been found, rederect to custom error page
res.writeHead(301, { Location: '/404' })
res.end()
}
} else {
next()
}
}