Промежуточное программное обеспечение Nextjs не вызывается

У меня есть проект монорепо, работающий с NX. Все работает нормально, но я попытался добавить промежуточное программное обеспечение, но оно не попадает в запросы. Я пробовал ставить его в разные места и с _ в названии, но безуспешно. Кто-нибудь знает, что здесь может быть не так? Вот изображение моего проекта и дистрибутива промежуточного программного обеспечения. Я использую Nextjs 14.0.4.

Это код моего промежуточного программного обеспечения:

import { NextResponse } from 'next/server';
import { NextRequest } from 'next/server';

export default function middleware(request: NextRequest) {
  const pathname = request.nextUrl.pathname;
  console.info('MIDDELWAREEEE');
  const publicPaths = ['/login', '/register'];

  if (publicPaths.includes(pathname)) {
    return NextResponse.next();
  }

  const token = request.cookies.get('auth_token');
  console.info('token', token);
  if (!token) {
    return redirectToLogin(request);
  }

  if (!token.value) {
    return redirectToLogin(request);
  }
}

function redirectToLogin(req: NextRequest) {
  const url = req.nextUrl.clone();
  url.pathname = '/login';
  return NextResponse.redirect(url);
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
88
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Файл промежуточного программного обеспечения должен находиться на том же уровне, что и папка pages, экспорт по умолчанию также не требуется.

вы можете проверить это официальную документацию предоставленную nextjs

Итак, промежуточное ПО уже находится на том же уровне, что и страницы.

joseFrancisco 06.05.2024 23:48

а вы изменили его, чтобы сделать нормальный экспорт, и это не сработало?

ZomitaKa 07.05.2024 15:10

Да, обычный экспорт по умолчанию не дал эффекта, только когда я изменил next.config.js.

joseFrancisco 10.05.2024 03:50
Ответ принят как подходящий

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

Если в next.config.js вы изменили расширения страниц, как я, на:

pageExtensions: ['page.tsx', 'api.ts'],

Мне пришлось добавить запись на обложку page.ts:

pageExtensions: ['page.tsx','page.ts', 'api.ts'],

Наконец добавили промежуточное ПО как middleware.page.ts на уровне страниц, и оно начало работать.

В целом, промежуточное программное обеспечение должно соответствовать расширениям страницы, определенным в next.config.js.

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