강의

멘토링

로드맵

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của fasdfadf
fasdfadf

câu hỏi đã được viết

Clone coding Inflearn Phần 1: Dự án thực tế bắt đầu với Next.js và NestJS

[BE] Bắt đầu triển khai Auth Guard cho backend. Làm việc ở phần lấy ID người dùng bằng Auth Guard.

The edge runtime does not support Node.js 'crypto' module.

Đã giải quyết

Viết

·

254

0

[auth][error] JWTSessionError: Read more at https://errors.authjs.dev#jwtsessionerror

[auth][cause]: Error: The edge runtime does not support Node.js 'crypto' module.

Learn More: https://nextjs.org/docs/messages/node-module-in-edge-runtime

at Object.get (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\_b7b28d92._.js:62:41)

at C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\node_modules__pnpm_e56295b8._.js:8637:62

at getSecret (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\node_modules__pnpm_e56295b8._.js:8620:20)

at push.[project]/node_modules/.pnpm/jsonwebtoken@9.0.2/node_modules/jsonwebtoken/verify.js [middleware-edge] (ecmascript).module.exports (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\node_modules__pnpm_e56295b8._.js:8623:12)

at Object.decode (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\[root-of-the-server]__273b5c62._.js:135:233)

at session (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\0253f_@auth_core_77718842._.js:4516:39)

at AuthInternal (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\0253f_@auth_core_77718842._.js:5123:269)

at async Auth (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\0253f_@auth_core_77718842._.js:5379:34)

at async handleAuth (C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\node_modules__pnpm_e56295b8._.js:3885:29)

at async C:\project\whatsForLunch\basic-app\frontend\.next\server\edge\chunks\_b7b28d92._.js:12505:20

[auth][details]: {}

GET / 200 in 137ms


auth.ts에
jwt: { encode: async ({ token, secret }) => { return jwt.sign(token as jwt.JwtPayload, secret as string); }, decode: async ({ token, secret }) => { return jwt.verify(token as string, secret as string) as JWT; }, },


이 부분을 추가한 이후부터
The edge runtime does not support Node.js 'crypto' module.
이 에러가 발생하는데 해결이 어렵네요.. 코드는 노션이랑 강의 보고 다 비교해 봤는데 드른 부분은 없었스빈다..



 

awsdockernext.jsnestjsprisma

Quiz

Vai trò chính của thư viện Auth.js là gì?

Quản lý lược đồ cơ sở dữ liệu

Thiết kế giao diện người dùng

Xử lý luồng xác thực (đăng nhập, đăng xuất, v.v.)

Tối ưu hóa hiệu suất render phía máy chủ

Câu trả lời 5

0

저도 같은 에러네요

lopun님의 프로필 이미지
lopun
Người chia sẻ kiến thức

모든 파일과 폴더 일치하는지, 라이브러리 설치항목과 버전 일치하는지 더블체크 부탁드립니다 🙂

질문자분의 이슈는 [...nextauth] 폴더 위치가 잘못된 이슈였습니다.

0

lopun님의 프로필 이미지
lopun
Người chia sẻ kiến thức

슬랙으로 답변 드렸습니다. 모든 파일과 폴더 일치하는지 확인 한번 부탁드립니다! 🙏

0

저도 cbmja님과 똑같은 에러가 나는데요.

강의 소스 체크 부탁 드립니다.

0

cbmja님의 프로필 이미지
cbmja
Người đặt câu hỏi

frontend/auth.ts 부분을
edge 런타임에서도 동작 가능하게 수정했습니다.

import {SignJWT, jwtVerify, JWTPayload} from 'jose';
.
.
.
jwt: { encode: async ({ token, secret }) => { const encodedSecret = new TextEncoder().encode(secret as string); return await new SignJWT(token as JWTPayload) .setProtectedHeader({ alg: 'HS256' }) .setIssuedAt() .setExpirationTime('1h') .sign(encodedSecret); }, decode: async ({ token, secret }) => { const encodedSecret = new TextEncoder().encode(secret as string); const { payload } = await jwtVerify(token!, encodedSecret); return payload as JWT; }, },


문제는 해결하긴 했는데 왜 이런 문제가 발생한 것인지를 모르겠네요..일단은 jsonwebtoken 말고 jose 사용했습니다.

0

안녕하세요, 인프런 AI 인턴입니다. cbmja님.

Next.js의 Edge Runtime 환경에서 발생하는 에러에 대해 설명해 드리겠습니다. 이 문제는 주로 Edge 환경에서의 Node.js 모듈 지원 제한으로 인해 발생하는데, 특히 crypto 모듈과 관련된 오류가 자주 보고됩니다. 기본적으로 Edge 환경에서는 일부 Node.js 모듈이 지원되지 않기 때문입니다.

문제 요약:
- “The edge runtime does not support Node.js ‘crypto’ module.” 오류는 Edge 컴퓨팅 환경에서 crypto 모듈과 같은 특정 Node.js 모듈을 사용할 수 없다는 것을 의미합니다.

해결 방법:
1. Node.js 환경으로 전환:
- crypto 모듈을 사용하는 코드는 Edge 환경이 아닌 일반 Node.js 환경에서 실행되도록 조정해야 합니다. 이는 Edge 환경 대신 서버 환경에서 JWT를 처리하도록 코드를 변경하는 것을 의미합니다.

  1. 대체 방법 사용:

    • Edge 환경에서도 사용할 수 있는 대체 라이브러리나 API를 사용하는 방법도 고려해볼 수 있습니다. WebCrypto API가 이에 대한 대안이 될 수 있습니다.
  2. 구성 변경:

    • Next.js의 API Routes를 사용하여 Edge 환경이 아닌 서버 환경에서 JWT 인코딩과 디코딩 작업을 수행하도록 코드베이스를 변경합니다.

이 주제에 대해 구체적인 해결 방법과 예제 코드는 아래 게시물에서도 확인하실 수 있습니다:
- Edge 환경에서 JWT 사용 문제 해결하기

위의 링크에서 더 많은 정보와 예제를 확인하셔서 코드 수정을 진행하시면 도움이 되실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hình ảnh hồ sơ của fasdfadf
fasdfadf

câu hỏi đã được viết

Đặt câu hỏi