Как перенаправить на страницу с ошибкой, если путь имеет .(точку) в Nuxt 2?

Я создал error.vue в каталоге макета, и он работает почти правильно, но если путь имеет точку, например (http://localhost:3000/for.m), я вижу «Cannot GET/PATH» вместо моей пользовательской страницы ошибок. Не могу ПОЛУЧИТЬ/ПУТЬ

Если я изменю цель файла nuxt.config.js на «сервер», эта проблема исчезнет, ​​но добавлю новые проблемы в путь (http://localhost:3000/_nuxt/), я увижу сообщение 404 по умолчанию из браузера вместо моей пользовательской страницы ошибок и на самом деле мне нужен целевой статический.

Сейчас я не могу исправить это с помощью настроек Nuxt, или я должен написать собственный обработчик ошибок.

может ли кто-нибудь помочь мне с этой проблемой. Спасибо за вашу помощь!

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
66
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел в 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()
  }
}

Другие вопросы по теме