Logout error: TypeError: res.setHeader is not a function using Next.js

I’ve recently started diving into Next.js, but I’ve hit a roadblock while working on the logout functionality. Despite researching similar issues, I’m still unable to resolve the error I’m encountering. Let me provide you with more context to better understand the problem.

Summaries Error:

Error Message: TypeError: res.setHeader is not a function
File: src/app/api/auth/logout/route.tsx
Probable Cause:
The error suggests that there’s an issue with the res object within the logout route. It seems like the res object doesn’t have the expected setHeader function. This typically indicates a mismatch between the expected and actual object types.

path: src/app/api/auth/logout/route.tsx

export async function GET(req: NextApiRequest, res: NextApiResponse) {
    try {
      res.setHeader(
        "Set-Cookie",
        `${COOKIE_NAME}=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT`
      );
      res.writeHead(302, { Location: "/login" });
      res.end();
    } catch (error) {
      console.error("Logout error:", error);
      res.status(500).json({ message: "Internal Server Error" });
    }
}

path: src/app/components/LeftPanel.tsx

import React from 'react';
import { Button } from "../../components/ui/button"
import './style.css';
import { useRouter } from 'next/navigation';
const LeftPanel: React.FC = () => {
  const { push } = useRouter();
  const handleLogout = async () => {
    try {
      const response = await fetch('/api/auth/logout', {
        method: 'GET',
      });
      if (response.ok) {
        window.alert('Logout successful! Click OK to go to the login page.');
        console.log('response', response);
        push('/login');
      }
    } catch (error) {
      console.error("Logout error:", error);
      // Handle any potential errors
    }
  };
  return (
    <div className="left-panel">
      <Button onClick={handleLogout}>Logout</Button>
    </div>
  );
};

export default LeftPanel;

FULL ERROR

Logout error: TypeError: res.setHeader is not a function
    at GET (webpack-internal:///(rsc)/./src/app/api/auth/logout/route.tsx:9:13)
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:53452
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibtracetracer.js:140:36
    at NoopContextManager.with (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:7062)
    at ContextAPI.with (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:518)
    at NoopTracer.startActiveSpan (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:18093)      
    at ProxyTracer.startActiveSpan (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:18854)     
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibtracetracer.js:122:103
    at NoopContextManager.with (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:7062)
    at ContextAPI.with (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:518)
    at NextTracerImpl.trace (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibtracetracer.js:122:28)
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:46261
    at AsyncLocalStorage.run (node:async_hooks:338:14)
    at Object.wrap (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:39188)
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:45368
    at AsyncLocalStorage.run (node:async_hooks:338:14)
    at Object.wrap (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:37583)
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:45330
    at AsyncLocalStorage.run (node:async_hooks:338:14)
    at e_.execute (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:44777)
    at e_.handle (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:54711)
    at doRender (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1377:60)
    at cacheEntry.responseCache.get.routeKind (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1599:34)
    at ResponseCache.get (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverresponse-cacheindex.js:49:26)
    at DevServer.renderToResponseWithComponentsImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1507:53)   
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1002:121
    at NextTracerImpl.trace (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibtracetracer.js:105:20)
    at DevServer.renderToResponseWithComponents (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1002:41)       
    at DevServer.renderPageComponent (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1924:35)
    at async DevServer.renderToResponseImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1962:32)
    at async DevServer.pipeImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:920:25)
    at async NextNodeServer.handleCatchallRenderRequest (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistservernext-server.js:272:17)    at async DevServer.handleRequestImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:816:17)
    at async C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverdevnext-dev-server.js:339:20
    at async Span.traceAsyncFn (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdisttracetrace.js:154:20)
    at async DevServer.handleRequest (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverdevnext-dev-server.js:336:24)
    at async invokeRender (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibrouter-server.js:174:21)
    at async handleRequest (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibrouter-server.js:353:24)
    at async requestHandlerImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibrouter-server.js:377:13)
    at async Server.requestListener (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibstart-server.js:141:13)
 тип TypeError: res.status is not a function
    at GET (webpack-internal:///(rsc)/./src/app/api/auth/logout/route.tsx:16:13)
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:53452
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibtracetracer.js:140:36
    at NoopContextManager.with (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:7062)
    at ContextAPI.with (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:518)
    at NoopTracer.startActiveSpan (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:18093)      
    at ProxyTracer.startActiveSpan (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:18854)     
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibtracetracer.js:122:103
    at NoopContextManager.with (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:7062)
    at ContextAPI.with (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompiled@opentelemetryapiindex.js:1:518)
    at NextTracerImpl.trace (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibtracetracer.js:122:28)
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:46261
    at AsyncLocalStorage.run (node:async_hooks:338:14)
    at Object.wrap (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:39188)
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:45368
    at AsyncLocalStorage.run (node:async_hooks:338:14)
    at Object.wrap (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:37583)
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:45330
    at AsyncLocalStorage.run (node:async_hooks:338:14)
    at e_.execute (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:44777)
    at e_.handle (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistcompilednext-serverapp-route.runtime.dev.js:6:54711)
    at doRender (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1377:60)
    at cacheEntry.responseCache.get.routeKind (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1599:34)
    at ResponseCache.get (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverresponse-cacheindex.js:49:26)
    at DevServer.renderToResponseWithComponentsImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1507:53)   
    at C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1002:121
    at NextTracerImpl.trace (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibtracetracer.js:105:20)
    at DevServer.renderToResponseWithComponents (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1002:41)       
    at DevServer.renderPageComponent (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1924:35)
    at async DevServer.renderToResponseImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:1962:32)
    at async DevServer.pipeImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:920:25)
    at async NextNodeServer.handleCatchallRenderRequest (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistservernext-server.js:272:17)    at async DevServer.handleRequestImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverbase-server.js:816:17)
    at async C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverdevnext-dev-server.js:339:20
    at async Span.traceAsyncFn (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdisttracetrace.js:154:20)
    at async DevServer.handleRequest (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverdevnext-dev-server.js:336:24)
    at async invokeRender (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibrouter-server.js:174:21)
    at async handleRequest (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibrouter-server.js:353:24)
    at async requestHandlerImpl (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibrouter-server.js:377:13)
    at async Server.requestListener (C:UsersDennisOneDriveDesktoploginNextloginnextnode_modulesnextdistserverlibstart-server.js:141:13)
 GET /api/auth/logout 500 in 549ms