[Node.js] 크롤링 연습 - [ERR_REQUIRE_ESM]: Must use import to load ES Module.. 에러 해결하기

muz·2021년 12월 3일
3

Trouble-Shooting 🔨

목록 보기
8/11
post-thumbnail

😥 문제 상황

node.js 크롤링 연습을 하던 중, 에러가 발생했다. csv파일을 그.. 파싱해서 출력하는 거였는데, 결과가 나오질 않는다 😥

왜 안나와... 어? 구글링 해본 결과 해당 사이트를 발견했다. 해당 사이트처럼 해봤지만 난 해결되지 않았다. 아래의 사진처럼 또 에러와 마주할 수 있었다.

계속 찾던 도중 해당 글을 발견하였다. 이 글처럼 해보면, require()에서 에러가 잡힌다.

결국에는 index.js파일을 이렇게 바꿔보았다.

// const parse = require('./node_modules/csv-parse/lib/sync.js');
const fs = require('fs');

const csv = fs.readFileSync('./csv/data.csv');
console.log(csv.toString('utf-8'));

그랬더니 나온다. 뭐야? 왜? 왜 나와?? 그리고 다시 주석을 풀어준 후 하면 안된다..


🤔 이게 무슨 에러야?

해당 에러는 commonJSES6 구문으로 인해 생기는 에러이다.

이를 해결하기 위해 여러 extension을 사용할 수 있다고 한다. 보통 바벨을 많이 쓰는 듯 하다. 바벨을 이용하면 최신 문법을 옛 버전의 문법으로 자동 변환이 가능하다.


😤 해결 방법

근데 해당 에러는 생뚱맞은 방법으로 해결했다. package.json 파일을 수정해주고, 다시 npm install을 했더니 잘 나온다.

사실 위의 파일을 수정하기 전에는 csv-parse의 버전이 5.0.0이상이었는데, 바꿔준 파일에서는 버전을 4.0.0대로 수정해주었다.

  "dependencies": {
    "csv-parse": "^4.4.6",
    "puppeteer": "^1.13.0"
  }

이렇게 바꿔주고, index.js파일은 이렇게 수정해주었다.

const parse = require('csv-parse/lib/sync');
const fs = require('fs');

const csv = fs.readFileSync('csv/data.csv');
const records = parse(csv.toString('utf-8'));
records.forEach((r, i) => {
  console.log(i, r);
});

npm install을 해준 후, npm start를 해주니..

이게 머시여? 잘나온다! 어쨌든 잘 해결됐다 ㅎ.ㅎ

node.js는 버전이 짱짱짱 중요한 듯 하다 🌞 버전때문에 매번 애먹는 중..

profile
Life is what i make up it 💨

0개의 댓글