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'));
그랬더니 나온다. 뭐야? 왜? 왜 나와?? 그리고 다시 주석을 풀어준 후 하면 안된다..
해당 에러는
commonJS
와ES6
구문으로 인해 생기는 에러이다.
이를 해결하기 위해 여러 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는 버전이 짱짱짱 중요한 듯 하다 🌞 버전때문에 매번 애먹는 중..