인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

Jaesimin님의 프로필 이미지
Jaesimin

작성한 질문수

[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

데이터베이스 세팅하기

ES6 Sequelize.sync error

작성

·

600

0

 

안녕하세요 현재 cjs 가 아닌 es6 로 nodejs 코드를 작성하고 있습니다. 9-2 강의 진행 중 강사님 깃헙 리포지토리 9-2 폴더 중 app.js 20번 줄에서

sequelize.sync is not a function

이라는 오류가 나옵니다. 구글 검색을 해본 결과 일부 블로그에서 es6 에서는 해당 함수를 사용이 불가하다는 글을 보았습니다.

그리고 models/index.js 파일에서

fs.readdirSync(__dirname)
  .filter(file=>{
    return file.indexOf('.') !== basename && file.slice(-3) === '.js';
  })
  .forEach((file) =>{
    import(path.join(__dirname,file))
      .then((obj) => {console.log(obj.name);
        obj(sequelize, Sequelize.DataTypes);
        db[obj.name] = obj;
        obj.initiate(sequelize);})
      .catch(err => console.log(err));
    
    //const model = require(path.join(__dirname, file)); 
    //console.log(file,model.name);
    //db[model.name] = model;
    //model.initiate(sequelize);
  });

주석 처리한 부분은 cjs 스타일이고 변경한 부분은 동적 import 를 사용해서 구현해보았습니다. 구글 검색 후

obj(sequelize, Sequelize.DataTypes) 구문을 삽입하면 해당 오류가 해결이된다고 했으나 해결이 되지 않습니다.

오류설명이 구구절절 길었으나 제 질문을 정리하자면

  1. 해당 함수(sequelize.sync)가 es6에서는 사용이 안되나요?

  2. 사용이 안되다면 전면 cjs 로 바꿔 코드 작성을 해야하나요?

입니다.

es6 코드 작성을 연습하고자 코드를 변경해가며 진행중인데 난관을 겪었습니다. 질문 유의사항을 잘지켜야지 하며 적었는데 가독성이 있을지는 모르겠습니다. 감사합니다.

답변 2

0

app.js 파일 상단 쪽에

const { sequelize } = require('./models');

를 추가해보세요.

0

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

각각 console.log(sequelize) console.log(obj) 먼저 해서 객체 모양을 확인해보세요.

Jaesimin님의 프로필 이미지
Jaesimin

작성한 질문수

질문하기