[정보 찾기] 넥스트12의 middleware에 TyperError adaper is not function이 나타날 때의 대응법

5886 단어 Next.jsaxiostech

결론


_middleware.ts 내부에서 axios를 사용하려면TypeError adapter is not function 나와요.
@vespaiach/axios-fetch-adapter를 추가하여 axios의 실례가 생성될 때fetchAdapter를 사용할 수 있습니다.
https://nextjs.org/docs/advanced-features/middleware
https://www.npmjs.com/package/@vespaiach/axios-fetch-adapter

중간부품 및 Axios 인스턴스


_middleware.ts
import {NextFetchEvent, NextRequest, NextResponse} from "next/server";
import fetchAdapter from "@vespaiach/axios-fetch-adapter";
import {apiServer} from "../../utils/apiServer";

export default async function middleware(req: NextRequest, ev: NextFetchEvent) {
    apiServer.defaults.adapter = fetchAdapter
    const {data} = await apiServer.get('auth/me')
    if (!data.authenticated) {
        return NextResponse.redirect('http://localhost:3000/auth/login')
    }
    return NextResponse.next()
}
apiServer.ts
import axios from "axios";

export const apiServer = axios.create({
    baseURL: process.env.API_ENDPOINT,
    responseType: 'json',
    withCredentials: true,
    headers: {
        "Content-Type": "application/json",
    }
})

불분명한 곳

  • _middleware.ts의 처리가 서버에서 실행되는지 여부
  • fetchAdapter에 필요한 조건은 무엇입니까?
  • 서버 쪽에서 그런 줄 알았는데 get Server Side Proops에서 어댑터를 만지지 않아도 정상적으로 작동할 수 있다
  • Service Worker에서 Axios 표준을 사용할 수 없는 요청에 대한 설명을 보았지만 nextjs의 SW에 대해서는 잘 모르겠다
  • 참고 자료


    https://stackoverflow.com/questions/70992541/next-js-v12-middleware-does-not-work-with-node-fetch-and-axios
    https://stackoverflow.com/questions/66305856/typeerror-adapter-is-not-a-function-error-when-using-axios-and-webpack-in-chrom

    좋은 웹페이지 즐겨찾기