TIL

23/11/11 TIL __ 시퀄라이저 메소드 오류 Cannot read properties of undefined (reading 'create') , create is not a function

GABOJOK 2023. 11. 11. 23:57

 

 

어제 만난 에러 ,,,,

 create is not a function...

이 부분을 하루종일 붙잡고 있었다.

 

아직 이해도가 낮은 상태에서 이유를 분석하려 하니, 시간이 더 많이 걸렸다.

 

 

 

🚓   접근 방법

 

    1️⃣  

일단 콘솔로그로 어디가 문제인지 여기저기 찍어보았다. 

그런데, require를 통해 가져오는 UsersData가 undefined가 나왔다.

 

const express = require("express");
const { UsersData } = require("../models/usersdata");
console.log(UsersData);  // undefined

 

 

이상했다.. 그래서 이번에는 참조 코드와 비교를 해봤다.

비교한 코드에서는 require를 통해 가져올때,  

const { UsersData } = require("../models");

 

이런 형식으로 가져오고 있어서, 시도해 봤다. 

콘솔에 출력값이 undefined 이 아닌, 어떤 함수로 바뀌었다. 

그러나 여전히 create는 작동하지 않았다. 

 

 

 

   2️⃣

혹시나 create 메소드가 문제일까? 싶어 다른 메소드도 시도해 봤다.

여전히 . 작동하지 않았다. 물론 그럴리가 없었다..

 

뭐가 문제일까  뜯어보며 검색을 다시 시작했다.

대부분의 글은, model 폴더 안에 있는 파일이 이상할 것이라고 추측하고 있었다. 

 

그러나 내 model 폴더 안에 있던  usersdata.js  파일은 강의자료에 코드와 크게 다르지 않았다.

그럼 이와 연결되어 있던 app.js 파일을 살펴보았다. 

이부분도 예제 코드와 다른 부분은 다 주석처리로 변경했다.

 

이번에는 model 폴더 안에 있던 index.js 파일을 비교했다.

처음에 오류가 나서 일단 주석처리 하고 넘어갔던 부분을 발견했다.

 

ㅎㅎ...

 

다시 주석을 푸니, 오류가 생겼고,

해당 오류를 검색해 보니, 파일만 존재하고 안에 내용물이 없기 때문에 발생하는 오류라 했다.

폴더, 파일 먼저 다 만들어두고 시작해서 발생한 문제였다.

 

내용물이 없는 파일은 삭제후 다시 시도하니 잘 index.js에서 나온 오류는 사라졌다.

이제 index.js는 원래의 상태와 동일했다.

그런데, 여전히 작동하지 않았다.

 

무었이 문제인지 알수 없어 정말 답답했지만 찾아야 한다. 

다시 검색을 시작했다.

 

 

 

   3️⃣

비동기 처리를 하지 않았거나, 세미클론을 하지 않아서 라는 스텍오버플로우 글을 보았다.

혹시나 싶어서 비동기 처리를 해주는 async, await를 달아주고, 세미클론도 꼼꼼히 확인해 봤지만..

여전히 작동하지 않았다. 

 

 

 

   4️⃣

결국 init 진행했다.

npx sequelize init

 

그리고 다시 config.json파일 및 다른 파일들을 다시 설정해 줬다. 

그러고 드디어...

작동이 되었다.

 

app.js며, index.js 파일이 원상태로 돌아왔고, 그럼 다른게 하나도 없었고,

model 폴더 내의 UsersData.js 파일도 경로 잘 가져오고 있었는데, 작동하지 않던게,

초기화 하고 다시 하니 되었다...

 

원인은 알수 없었지만, 추측하기로는,

처음 시도했을때 index.js에 오류가 나서 건든 상태로, 

이후 작업들을 진행해서 문제가 생긴 것 같다. 

 

 

교훈... index.js는 함부로 건들지 말자. 

 

 

그래도 드디어 해결해 정말 정말 다행..