1. 与文件位置有关
1.1 如果有src目录 将middleware.ts放在src目录下
1.2. 如果没有就放在根目录下
1.3. 中间件的导出方式,使用export function,不允许用default
1.4. 注意:middleware 只能是服务端内容,不可写客户端组件内容
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
const PROTECTED_ROUTES = ['/my-creations']
import {ACCESS_TOKEN} from '@base/const'
console.log("正在执行 middleware 的内容")
export function middleware(request: NextRequest) {
if (PROTECTED_ROUTES.includes(request.nextUrl.pathname)) {
return NextResponse.redirect(new URL('/login', request.url))
}
}
export const config = {
matcher: PROTECTED_ROUTES,
}
2. 如果 middleware 的位置、代码都没有问题的话,可能是 next.config.ts阻止了middleware的执行,可以将一些配置注视掉再查看是否有效
import type { NextConfig } from 'next';
const nextConfig: NextConfig = {
productionBrowserSourceMaps: false,
output: 'standalone',
reactStrictMode: false,
};
export default nextConfig;