세션 데이터를 mongoDB에 저장하기 위한 세션 설정 중, secret과 store 속성 입력 시 코드가 노출되면 안 되기 때문에 .env에 해당 데이터를 환경변수로 설정한 뒤 코드를 환경 변수로 변경하니 위의 에러가 발생하였다.
.env에는 secret과 store속성값에 대한 환경변수를 다음과 같이 설정
COOKIE_SECRET=내가 설정한 값
DB_URL=내가 설정한 값
server.js에 설정한 세션 관련 속성
app.use(session({
secret: process.env.COOKIE_SECRET,
resave: false,
saveUninitialized: false,
cookie: {
maxAge: 20000, // milisecond로 설정
},
store: MongoStore.create({mongoUrl: process.env.DB_URL}),
}));
mongoUrl을 환경변수로 입력해줬는데 mongoUrl이 제공되지 않았다는 에러가 떠 여러가지 시도를 통해 원인을 알아보았다. 다음의 공식문서에서 많이 참고했다.
https://www.npmjs.com/package/dotenv
.env 설치 여부 확인
package.json에 입력된 내용으로보아 설치가 잘 되었다.
import가 잘 되었는지의 여부 확인
.env 파일은 가장 처음으로 실행되는 파일의 최상단에 import 하는것을 권장하고 있다.
"scripts": {
"dev": "nodemon --exec babel-node src/init.js"
},
잘 모르겠다면 package.json을 확인. 처음으로 실행시키는 파일이 무엇인지 scripts 부분에 명시되어있다.
init.js파일에 import를 잘 해준 것을 확인
import ‘dotenv/config’
.env에 환경변수 설정시 ''(작은 따옴표) 또는 ""(큰따옴표)를 입력했는지 확인
.env에 환경변수를 설정할 때는 '' 또는 ""를 입력하지 않아야 한다.
오타 확인

.env파일을 프로젝트의 루트 디렉터리에 위치시키지 않았다.
.env파일을 프로젝트의 루트 디렉터리에 위치시킨다.