24.01.03 12:45 작성
·
1.2K
·
수정됨
0
app-index.js:32 ClientFetchError: Unexpected token '<', "<!doctype "... is not valid JSON .Read more at https://errors.authjs.dev#autherror
at fetchData (client.js:39:1)
at async getSession (react.js:87:1)
at async __NEXTAUTH._getSession (react.js:245:1)
이런 에러가 뜨고 있습니다...
이전까지는 잘 동작했는데, 어느순간부터 이런 에러가 발생합니다.
Next-Auth 라이브러리 문제인 것 같아서 Github Issues까지 확인해서 적용해봤는데 에러가 해결되지 않는 것 같습니다...
auth.ts, middleware.ts, app/api/auth/[...nextauth]/route.ts 혹시나해서 모두 선생님 코드 복사, 붙여넣기 했고, 로그인 관련 코드도 모두 복사 붙여넣기 했는데 에러가 발생하는 것 같습니다.
로그인 시 로그인 session이 cookie에 담기긴 하나, 이것을 useSession()을 통해 값을 불러오진 못하고 있고, auth.ts에서 로그인할 때 console.log한 경우에 user 값이 제대로 찍히는 것 까진 확인했습니다.
답변 3
0
2024. 01. 03. 18:31
선생님 이거 브라우저 문제였던 것 같습니다.
다른 프로젝트의 세션과 충돌나는 걸로 의심이 됩니다...
시크릿 탭에서는 잘 되는데, 일반 탭에서만 useSession의 response가 중간에 제가 하고 있는 기존의 다른 프로젝트의 html로 보내지는 것 같습니다!
0
2024. 01. 03. 14:30
처음 페이지에서부터 저 오류가 나오고
로그인한 후에 메인화면으로 넘어가긴 하는데 세션 정보를 못 불러와서 아래 로그아웃 버튼과 트렌드쪽에서 저렇게 나옵니다.
그런데 로그인한 직후에 cookie 보니깐 잘 들어가 있는 것 같아요
그러면 useSession에서 뭔가를 잘못받아오는 것 같다는 생각이 듭니다...ㅜㅜ
2024. 01. 03. 14:40
강의 깃헙 ch3-1, ch3-2 모두 해봤는데 잘 됩니다.
네트워크 탭에서 localhost:3000/api/auth/session 요청 보내는 것 있는지 확인해보세요. 그게 useSession() 데이터 가져오는 겁니다.
2024. 01. 03. 16:06
혹시 뭐 다른 서버 실행 중인 건 아닌가요? 예전에는 잘 됐으면 그 때로 되돌아가는 수밖에 없습니다. 깃 커밋을 틈틈이 해두거나 그런 방식으로요.
2024. 01. 03. 16:24
5시간 전에 다른 프로젝트를 돌리긴 했었는데, 현재는 아니기도 할 뿐 더러 사파리로는 되는데 크롬으로는 안되는 신기한 현상이 발생해서 답답하네요 ㅜㅜ
0
2024. 01. 03. 13:57
다른 데이터는 mock 서버로부터 잘 받아와지는데 useSession같이 세션정보만 못받아오는 것 같아요
근데 session-token은 저장되어 있는 상태입니다
2024. 01. 03. 13:58
auth.ts 한 번 보여주세요
지금 json이 와야하는 라우터에서 html이 오고있는 건데요. 보통 404인 경우 이렇게 html이 오고, 주소 틀린 경우도 많습니다.
2024. 01. 03. 14:01
import NextAuth from 'next-auth';
import CredentialsProvider from 'next-auth/providers/credentials';
export const {
handlers: { GET, POST },
auth,
signIn,
} = NextAuth({
pages: {
signIn: '/i/flow/login',
newUser: '/i/flow/signup',
},
providers: [
CredentialsProvider({
async authorize(credentials, req) {
try {
const authResponse = await fetch(
`${process.env.AUTH_URL}/api/login`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
id: credentials.username,
password: credentials.password,
}),
}
);
if (!authResponse.ok) {
return null;
}
const user = await authResponse.json();
console.log('user', user);
return {
email: user.id,
name: user.nickname,
image: user.image,
...user,
};
} catch (error) {
console.error('로그인 에러', error);
}
},
}),
],
});
입니다! try-catch문은 에러 확인차 넣어두었고, try-catch 감싸기 이전부터 안되었습니다
.env.local의 AUTH_URL은 아래와 같습니다!
AUTH_URL=http://localhost:9090
2024. 01. 03. 14:12
.env.local
NEXT_PUBLIC_API_MOCKING=enabled
NEXT_PUBLIC_BASE_URL=http://127.0.0.1:9090
AUTH_URL=http://localhost:9090
NEXT_PUBLIC_MODE=local
.env
AUTH_URL=http://localhost:9090
AUTH_SECRET=mustkeepinsecret
입니다!
2024. 01. 03. 18:34
추가적으로 브라우저 자체의 쿠키랑 인터넷 기록을 다 지우니깐 되네요... ㅜㅜ