server 쪽에서 should be a number of seconds or string representing a timespan 에러가 발생합니다
Window, node 22 버전 사용중입니다. 4-5 로그인 연동하기에서 회원가입까진 연동이 되는데 로그인 api 요청시 500에러가 발생합니다.
[Nest] 22548 - 2025. 02. 15. 오후 10:00:50 ERROR [ExceptionsHandler] "expiresIn" should be a number of seconds or string representing a timespan
Error: "expiresIn" should be a number of seconds or string representing a timespan
at D:\project\community\server\node_modules\jsonwebtoken\sign.js:56:15
at Array.forEach (<anonymous>)
at validate (D:\project\community\server\node_modules\jsonwebtoken\sign.js:47:6)
at validateOptions (D:\project\community\server\node_modules\jsonwebtoken\sign.js:62:10)
at module.exports [as sign] (D:\project\community\server\node_modules\jsonwebtoken\sign.js:171:5)
at D:\project\community\server\node_modules\@nestjs\jwt\dist\jwt.service.js:56:17
[Nest] 22548 - 2025. 02. 15. 오후 10:00:50 LOG [HTTP] [POST] /auth/signin (500) (okhttp/4.12.0)
//axios.ts
import axios from "axios";
import {Platform} from "react-native";
const baseUrls = {
ios: 'http://localhost:3030',
android: 'http://10.0.2.2:3030'
}
const axiosInstance = axios.create({
baseURL: baseUrls[Platform.OS] ?? 'http://localhost:3030'
});
export default axiosInstance
//auth.ts
import {getSecureStore} from "@/utils/secureStore";
import axios from "@/api/axios";
import {Profile} from "@/types";
interface RequestUser {
email: string;
password: string
}
async function postSignup(body: RequestUser): Promise<void> {
const {data} = await axios.post('/auth/signup', body);
return data;
}
async function postLogin(body: RequestUser): Promise<{ accessToken: string }> {
const {data} = await axios.post('/auth/signin', body);
return data;
}
//useAuth.ts
function useLogin() {
return useMutation({
mutationFn: postLogin,
onSuccess: async ({accessToken}) => {
setHeader('Authorization', accessToken)
await saveSecureStore('accessToken', accessToken);
queryClient.fetchQuery({queryKey: ['auth', 'getMe']});
router.replace('/')
},
onError: () => {
},
})
}postLogin 에서 엔드포인트만 /auth/signup로 바꾸면 회원가입은 정상적으로 요청이 됩니다.
답변 2
0
env를 생성할때 README 를 그대로 복사하셨다면,
env 파일에서 맨아랫줄 키를 JWT_ACCESS_TOKEN_EXPIRATION 으로 변경하고 해보시겠어요?? 오타(ACCERSS)가있었네요! 수업 파일 README도 변경해놓았습니다.
0
안녕하세요, 인프런 AI 인턴입니다. ljy014님이 겪고 계신 문제를 해결하기 위한 조언을 드리겠습니다.
현재 발생하고 있는 "expiresIn" should be a number of seconds or string representing a timespan 오류는 jsonwebtoken 라이브러리를 사용하여 JWT 토큰을 생성할 때 expiresIn 옵션 값이 잘못되었기 때문에 발생하는 문제입니다. 보통 이 옵션은 토큰의 만료 시간을 설정하며, 숫자(초 단위)나 문자열 형식(“1h”, “7d” 등)으로 설정해야 합니다. 이 문제를 해결하기 위해 sign 함수가 호출되는 부분을 점검해 주세요.
문제 해결 방법:
- 서버 부분 확인:
jsonwebtoken.sign함수가 호출되는 코드에서expiresIn옵션이 올바르게 설정되어 있는지 확인해 보세요. 예를 들어, 아래와 같이 설정할 수 있습니다:
const token = jwt.sign({ userId }, secret, {
expiresIn: '1h', // 1 hour
});
설정값 검사:
.env 파일이나 설정 파일에서expiresIn값을 잘못 설정했을 가능성도 있습니다. 해당 파일들을 확인하고 만약 설정이 없는 경우 이 값을 명시적으로 지정해 주세요.NestJS 설정:
NestJS JWT 모듈의 설정 부분에서expiresIn값이 올바르게 설정되어 있는지 확인하세요.타 서비스 참조:
혹시 다른 서비스나 모듈에서token관련 설정 값을 가져오고 있다면, 그 값들이 적절한지도 체크해보시기 바랍니다.
유사한 문제를 겪었던 사용자들의 질문과 답변에서 더 많은 실마리를 얻으실 수 있습니다. 아래는 관련 링크입니다.
- JWT 오류 해결 - jsonwebtoken 사용 시 주의할 점
문제가 지속되거나 추가적인 오류가 발생한다면 더 자세한 정보를 제공해 주시면 더 나은 조언을 드릴 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
secureTextEntry 설정에 관해
0
58
2
expo 55 tabs 사라짐 이슈
0
83
2
백엔드도 궁금합니다!
1
86
1
댓글 버튼 하단에 고정되지 않는 이슈
0
53
1
SafeAreaView 적용 기준 문의
0
82
2
스크린 옵션 아이콘
0
56
2
[Note] 안드로이드 네비게이션 헤더 이슈 안내
0
67
2
ActionSheet
0
87
1
안드로이드 폰과 PC에서 테스트할때 화면 안보임과 오류 문의
0
99
1
iOS 빌드 후 실기기에서 앱 시작
1
71
1
[5-2] 글 목록 무한스크롤 구현하기 with InfiniteQuery 10:40/ useScrollTop(ref) 사용관련
0
84
2
클라이언트 사이드에서 세션 관련 질문
0
82
2
Android 에뮬레이터 환경설정 및 실행 (for Mac) 에러 문의
0
113
1
[5-13] useLikePost 쿼리 구현 중 Tanstack Query 관련 질문
0
63
1
Expo 54 버전 ios에서 headerLeft
1
140
2
어플 개발 후 배포 시에 주의할 사항이 있을까요?
0
79
1
코드 수정 시 ios 시뮬레이터에서 자동반영이 안 되는데 왜그럴까요?
0
92
1
텍스트가 다 상단위로 올라가있는데 어떻게 해야할까요?
0
78
2
Axios Network error...
0
151
2
강의는 52버전인데 expo가 현재 54버전이에요
0
310
1
[TIP] SafeAreaView 사용할 때마다 자꾸 ios에서 위아래가 빵꾸 나시는 분들 필독
0
238
2
키보드 이슈 관련 해결 질문
0
74
1
android header를 ios처럼 바꾸기
0
70
1
CustomButton 코드 버튼 관련 질문
0
66
1





