inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

아바타 커뮤니티앱 만들기 (React Native Expo)

server 쪽에서 should be a number of seconds or string representing a timespan 에러가 발생합니다

해결된 질문

123

ljy014

작성한 질문수 3

0

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로 바꾸면 회원가입은 정상적으로 요청이 됩니다.

javascript react react-native typescript react-query

답변 2

0

Kyo

env를 생성할때 README 를 그대로 복사하셨다면,

env 파일에서 맨아랫줄 키를 JWT_ACCESS_TOKEN_EXPIRATION 으로 변경하고 해보시겠어요?? 오타(ACCERSS)가있었네요! 수업 파일 README도 변경해놓았습니다.

0

ljy014

말씀해주신대로하니 해결됐습니다! 감사합니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. ljy014님이 겪고 계신 문제를 해결하기 위한 조언을 드리겠습니다.

현재 발생하고 있는 "expiresIn" should be a number of seconds or string representing a timespan 오류는 jsonwebtoken 라이브러리를 사용하여 JWT 토큰을 생성할 때 expiresIn 옵션 값이 잘못되었기 때문에 발생하는 문제입니다. 보통 이 옵션은 토큰의 만료 시간을 설정하며, 숫자(초 단위)나 문자열 형식(“1h”, “7d” 등)으로 설정해야 합니다. 이 문제를 해결하기 위해 sign 함수가 호출되는 부분을 점검해 주세요.

문제 해결 방법:

  1. 서버 부분 확인:
    jsonwebtoken.sign 함수가 호출되는 코드에서 expiresIn 옵션이 올바르게 설정되어 있는지 확인해 보세요. 예를 들어, 아래와 같이 설정할 수 있습니다:
   const token = jwt.sign({ userId }, secret, {
     expiresIn: '1h', // 1 hour
   });
  1. 설정값 검사:
    .env 파일이나 설정 파일에서 expiresIn 값을 잘못 설정했을 가능성도 있습니다. 해당 파일들을 확인하고 만약 설정이 없는 경우 이 값을 명시적으로 지정해 주세요.

  2. NestJS 설정:
    NestJS JWT 모듈의 설정 부분에서 expiresIn 값이 올바르게 설정되어 있는지 확인하세요.

  3. 타 서비스 참조:
    혹시 다른 서비스나 모듈에서 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