작성
·
308
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를 마우스 왼쪽 클릭하면 아래와 같은 경로로 안내하던데
이거랑 관련이 있는건가요?
lightsail 서버에서는 위 사진의 경로에 passport-kakao가 안보이긴합니다
대소문자도 구분하셔야합니다