如何在nextJs项目中设置中间件文件

lx0bsm1f  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(94)

我目前正在使用Next.js进行一个项目。总体而言,事情进展顺利,但我遇到了一个问题,我的中间件.ts文件。尽管努力遵循Middleware docs,中间件似乎没有按预期触发。下面是我的middleware.ts文件的内容:

import { NextRequest, NextResponse } from 'next/server'
 
// This function can be marked `async` if using `await` inside
export function middleware(request: NextRequest) {
      console.log("it ran")
      
    return NextResponse.json({"hello":"middleware"})

 
}

字符串
奇怪的是,响应和console.log语句都没有被执行。为了提供更多的上下文,这里是我的项目的结构:


的数据
我将感谢任何关于解决这个问题的见解或指导。

ovfsdjhp

ovfsdjhp1#

首先,middleware != api
您的中间件文件 * 不应该 * 返回JSONNextResponse.next()以外的任何内容。您必须返回NextResponse.next()才能让您的应用程序去它应该去的地方。如果您不返回NextResponse.next(),那么您的请求就会被卡在中间件中。
将你的代码修改成这样就可以让它工作了。

import { NextRequest, NextResponse } from "next/server";

// This function can be marked `async` if using `await` inside
export function middleware(request: NextRequest) {
  console.log("it ran");
  
  // here, you can do other works like, check if the user is logged in
  // or if the user's ip is in the blocked list etc.

  return NextResponse.next();
}

字符串

相关问题