인프런 커뮤니티 질문&답변

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim

작성한 질문수

Vue로 Nodebird SNS 만들기

6-9. 도메인 연결하기

안녕하세요! CORS 에러 및 로그인 issue 질문드립니다.

작성

·

540

0

안녕하세요!

1. 도메인 연결 후 로그인  CORS error가 나서 cors 관련 코드를 다시 확인해보았는데 제로초님과 동일하게 작성되어 있고, store/users.js file에도 credential: true 가 빠짐없이 적혀있는데, 어디서부터 검토를 해봐야 할지 알려주시면 감사하겠습니다. 

2. 디버깅 중에 혹시 로컬 서버에도 문제가 있는지 체크하던 중에, 네트워크나 화면상에서는 큰 이슈가 없어 보였던 로컬 서버에서사실 에러가 있었던 것을 발견했습니다. 이 부분도 혹시 어디서 실마리를 찾을 수 있을지, 더 살펴봐야 할 것은 무엇인지 알려주신다면 감사하겠습니다!

답변 15

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

그 아래에 NODE_ENV도 찍어보세요.

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

반대로 process.env.PORT도 찍어보세요. 누가 덮어씌우고 있는 것 같은데 그 부분을 찾기가 힘드네요. app.js 전체 파일 올려주시고요

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

cors 모듈에서 prod 변수에 따라 cors 설정이 달라지는데 NODE_ENV가 production이 맞는지 확인해보세요. 제 생각에는 설정이 안 되어있을 것 같습니다.

401 Get /user는 로그인되지 않은 상태로 내 정보를 가져오는 요청을 할 때 발생하는 에러라서 발생해도 큰 문제는 없습니다.

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

감사합니다:)

0

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

아, 제로초님, 드디어 해결되었어요! mySQL 데이터를 다 지우고 초기화 시키고 다시 했더니 거짓말처럼 작동하네요. 포기하지 않고 도와주셔서 감사해요:)

0

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

production으로 나옵니다ㅠㅠ 답변 주셔서 감사해요!

0

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

credentials로 다시 바꿔서 돌려보니 80으로 뜨네요!

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

cors 자리는 credentials 가 맞습니다.

PORT 콘솔로그 찍은 것은 뭘로 뜨나요?

0

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

app.js 파일입니다. 혹시 credentials때문에 그런거 아닌가 해서 cors 부분을 withCredential로 바꾸어봤어요.

const express = require('express');
const cors = require('cors');
const passport = require('passport');
const session = require('express-session');
const cookie = require('cookie-parser');
const morgan = require('morgan');
const hpp = require('hpp');
const helmet = require('helmet');
const dotenv = require('dotenv');

const prod = process.env.NODE_ENV === 'production';
const db = require('./models');
const passportConfig = require('./passport');
const userRouter = require('./routes/user');
const postRouter = require('./routes/post');
const postsRouter = require('./routes/posts');
const hashtagRouter = require('./routes/hashtag');
const app = express();

dotenv.config();
db.sequelize.sync();
passportConfig();

if(prod) {
app.use(helmet());
app.use(hpp());
app.use(morgan('combined'));
app.use(cors({
origin: 'http://simplestory.ga',
withCredentials: true,
}));
} else {
app.use(morgan('dev'))
app.use(cors({
origin: 'http://localhost:3080',
withCredentials: true,
}));
}

app.use('/', express.static('uploads'));
app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.use(cookie(process.env.COOKIE_SECRET));
app.use(session({
resave: false,
saveUninitialized: false,
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
secure: false,
domain: prod && '.simplestory.ga',
},
}));
app.use(passport.initialize());
app.use(passport.session());

app.get('/', (req, res) => {
res.status(200).send("New express app");
})

app.use('/user', userRouter);
app.use('/post', postRouter);
app.use('/posts', postsRouter);
app.use('/hashtag', hashtagRouter);

app.listen(prod? process.env.PORT : 3085, () => {
console.log(process.env.PORT)
console.log(`backend ${prod ? process.env.PORT : 3085} is ready`);
});

0

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

npm start로 입력했어요!

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

서버 실행 명령어를 어떻게 입력하셨나요?

0

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

아, 답글이 누락되었었네요. .env에도 딱히 문제될만한게 보이지 않는데 어디서 부터 틀어졌는지 잘 모르겠어요!

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

.env에는요?

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

.env에도 특별히 문제가 될만한 건 없는것 같은데..ㅠ 

0

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

특별히 제가 코드로 덮어씌운것은 없는 것 같은데... 뭐가 문제일까요?;;

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

.env에 NODE_ENV를 덮어씌우는 뭔가가 있나요?

0

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim
질문자

아, 정말 오랫동안 고민했는데 답변주셔서 감사합니다!

강의에서 알려주신대로 package.json에서 NODE_ENV를 production으로 변경했다고 생각했는데 app.js에 console.log를 찍어보니 NODE_ENV가  undefined가 나오네요. 제가 잘못 생각한 것이 있을까요?

Ahyoung Kim님의 프로필 이미지
Ahyoung Kim

작성한 질문수

질문하기