• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

Lightsail에서 배포시 Error: Cannot find module './KakaoStrategy'에 대한 오류 질문입니다.

23.07.28 18:55 작성 조회수 206

0

안녕하세요 강사님,

현재 Lightsail에서 배포를 진행하며

$ sudo NODE_ENV=production PORT=80 pm2 start server.js -i 0 명령어 작성후

$ sudo pm2 monit으로 확인해 보니 아래와 같은 오류가 발생합니다.KakaoStrategy 모듈을 못찾는다는데

passport-kakao 1.0.0 버전으로 npm i를 했었습니다. 어떤게 문제인걸까요..?

로컬에서는 문제없이 잘 돌아갔습니다.

 

package.json 입니다.

{
...
    "dependencies": {
        "@aws-sdk/client-s3": "^3.377.0",
        "bcrypt": "^5.1.0",
        "connect-redis": "^4.0.4",
        "cookie-parser": "^1.4.6",
        "cors": "^2.8.5",
        "cross-env": "^7.0.3",
        "csurf": "^1.11.0",
        "dotenv": "^16.3.1",
        "express": "^4.18.2",
        "express-session": "^1.17.3",
        "helmet": "^7.0.0",
        "hpp": "^0.2.3",
        "morgan": "^1.10.0",
        "multer": "^1.4.5-lts.1",
        "multer-s3": "^3.0.1",
        "mysql2": "^3.4.2",
        "nunjucks": "^3.2.4",
        "passport": "^0.6.0",
        "passport-kakao": "1.0.0",
        "passport-local": "^1.0.0",
        "pm2": "^5.3.0",
        "redis": "^3.0.2",
        "sanitize-html": "^2.11.0",
        "sequelize": "^6.32.1",
        "sequelize-cli": "^6.6.1",
        "winston": "^3.10.0"
    },
    "devDependencies": {
        "nodemon": "^2.0.22"
    }
}

 

passport > kakaoStrategy.js 부분입니다.

const passport = require('passport');
const KakaoStrategy = require('passport-kakao').Strategy;

const User = require('../models/user');

module.exports = () => {
    passport.use(new KakaoStrategy({
        clientID: process.env.KAKAO_ID,
        callbackURL: '/auth/kakao/callback',
    }, async (accessToken, refreshToken, profile, done) => { // accessToken, refreshToken은 카카오 api를 호출하는데 사용되나, 여기선 사용하지 않음
        console.log('kakao profile', profile);
        try {
            const exUser = await User.findOne({
                where: { snsId: profile.id, provider: 'kakao' }, 
            });
            if (exUser) {   //login
                done(null, exUser);
            }
            else {  //join
                const newUser = await User.create({
                    email: profile._json?.kakao_account?.email, // 이 구조가 자주 바뀌므로, profile을 console.log를 통해 계속 확인하자
                    nick: profile.displayName,
                    snsId: profile.id,
                    provider: 'kakao',
                });
                done(null, newUser);
            }
        }
        catch (error) {
            console.error(error);
            done(error);
        }
    }));
};

 

답변 2

·

답변을 작성해보세요.

0

아.. 오탈자를 발견했습니다 ㅠㅠ

대소문자도 구분하셔야합니다

0

로컬에서는 vscode로 passport > kakaoStrategy.js에 들어가서

new KakaoStrategy를 마우스 왼쪽 클릭하면 아래와 같은 경로로 안내하던데

이거랑 관련이 있는건가요?

image

lightsail 서버에서는 위 사진의 경로에 passport-kakao가 안보이긴합니다

image