Ошибка Next.js 404 для всех предварительно загруженных ссылок

Я новичок в next.js и в качестве первого шага, прежде чем приступить к разработке реального приложения, я изучаю документы, чтобы изучить основы, и сейчас я изо всех сил пытаюсь заставить работать предварительную выборку, так как все предварительно загруженные запросы возвращают ошибку 404.

Так что не так с моим кодом? Как я могу решить эту проблему?

Демо-репозиторий находится на GitHub.

2 ответа

Решение

Обратите внимание, что только express сервер знает, как обрабатывать URL такого типа /post/:id, next.js так не знает next.js пытается предварительно выбрать несуществующие страницы (и вы можете увидеть это в выводе консоли Chrome).

Вы можете легко исправить это поведение: просто нужно переписать ваши ссылки таким образом

<Link href={`/post/?id=${show.id}`} as={`/post/${show.id}`} prefetch>

В результате только один запрос для предварительной выборки post.js страница будет выполнена.

Эта техника называется "маскирование маршрута", о которой вы можете прочитать больше в руководстве Next.js

Обновление: кажется, что вопрос больше о том, как prefetch На самом деле эта функция работает в Next.js, поэтому я постараюсь объяснить это. Без prefetch prop на Link Next.js будет загружать связанный блок по требованию (когда пользователь щелкает ссылку), поэтому это приведет к небольшой задержке загрузки и анализа javascript. prefetch prop позволяет вам убрать эту задержку, потому что javascript будет загружен как можно скорее после запуска приложения. В обоих случаях новая страница будет отображаться в браузере, как в обычном приложении React.

Не используйте это: import Link from "next/link";

Использовать: import { Link } from './routes';Это файл конфигурации route.js

Мои маршруты.js:

      
const routes = (module.exports = require("next-routes")());
routes.add("/:username", "profilepage");

С использованием :

      import { Link } from './routes';
<Link route={"/my_page"}><a href="my_page">My Page</a></Link>
Другие вопросы по тегам