인프런 커뮤니티 질문&답변
Lightsail에서 배포시 Error: Cannot find module './KakaoStrategy'에 대한 오류 질문입니다.
작성
·
381
0
안녕하세요 강사님,
현재 Lightsail에서 배포를 진행하며
$ sudo NODE_ENV=production PORT=80 pm2 start server.js -i 0 명령어 작성후
$ sudo pm2 monit으로 확인해 보니 아래와 같은 오류가 발생합니다. KakaoStrategy 모듈을 못찾는다는데
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

rlawjddn4706
질문자
로컬에서는 vscode로 passport > kakaoStrategy.js에 들어가서
new KakaoStrategy를 마우스 왼쪽 클릭하면 아래와 같은 경로로 안내하던데
이거랑 관련이 있는건가요?

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








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