2024. 2. 23. 13:41ㆍ프로젝트_트러블슈팅
<상황>
node 서버로 구축한 API 호출을 시도 했으나 실행되는 도중 API안에 크롤링을 진행하는 로직이 멈추는 일이 발생
함수는 try-catch로 감싸고 있었으나 catch문에 넣은 에러 알림 코드 또한 실행이 안되는 문제가 생겼다.
기능이 실행이 안되지만 에러또한 모르는 상황이 발생하니
해결을 위한 시도를 여러 방면으로 해봤다.
<시도>
1. 모든 구간마다 log를 찍어 확인 -> router.post 함수안에 try - catch 중 try 안에 또 try-catch가 있는 구조 였는데
안쪽 try문이 실행안되는 것 확인!
2. 렌더링 순서 문제인지 확인 -> 바깥 쪽 try문에 정의된 함수를 await 함수() 로 사용했기에 이 문제는 아니라고 추측
3. 일단 에러가 뜨지 않는 상황이기에 catch에 집중
<문제 확인>
1. 안쪽 catch문은 터미널에 error 를 보여주지만 바깥쪽 catch는 클라이언트에 에러 코드만 반환하게 되어있어 바깥쪽 try에 문제 발생시 개발자인 내가 확인을 못했음
2. 위에서 언급했듯이 안쪽 try안에서 문제가 생긴게 아니라 바깥쪽에서 안쪽 try를 실행시키기 직전에 문제가 발생한 것이었음 ( 에러 발생 예상 부분이 틀려서 삽질한거!)
<해결방법>
바깥쪽 try-catch문에서 catch에 console.error를 찍어봤다.
ㄴ> 에러가 터미널 콘솔 창에 떴고 에러는 객체정의가 되어있지 않다는 것이었다.
=> 즉 크롤링을 위해 쓴 selenium-webdriver 라이브러리의 객체 정의가 되어 있지 않았던 것!
파일 상단에
const { Builder, By, Key, until } = require('selenium-webdriver');
const chrome = require('selenium-webdriver/chrome');
이부분을 제대로 추가했더니 정상 실행되었다.
" 오늘의 교훈 "
catch문에 에러 확인 코드( console.error() )는 습관적으로 해두자!
'프로젝트_트러블슈팅' 카테고리의 다른 글
[PersonaAI - 비공개 프로젝트 d] myBatis useGeneratedKeys 안될때 (2) | 2024.07.25 |
---|---|
[PersonaAI - 비공개 프로젝트b-2] Java 크롤링 (0) | 2024.03.12 |
[PersonaAI - 비공개 프로젝트b] node.js 크롤링 (0) | 2024.02.23 |
[PersonaAI - 비공개 프로젝트b] ejs 화면 구동 (0) | 2024.02.23 |
[PersonaAI - 비공개 프로젝트b] node.js 프로젝트 생성 (0) | 2024.02.23 |