-
cannot find module - heroku개발/삽질 기록 2021. 1. 10. 11:01
파일 이름을 리팩토링 한 후 새롭게 배포를 했더니 heroku에서 파일을 찾을 수 없다는 에러가 발생하게 됐다. 분명 로컬에서는 아무 문제 없이 제대로 돌아가고 있는데 heroku에 deploy하면 file을 찾을 수 없다는 에러가 발생했다.
2021-01-10T01:25:18.946380+00:00 app[web.1]: mytrot development mode 2021-01-10T01:25:19.123710+00:00 app[web.1]: internal/modules/cjs/loader.js:883 2021-01-10T01:25:19.123711+00:00 app[web.1]: throw err; 2021-01-10T01:25:19.123712+00:00 app[web.1]: ^ 2021-01-10T01:25:19.123712+00:00 app[web.1]: 2021-01-10T01:25:19.123713+00:00 app[web.1]: Error: Cannot find module '../utils/errors' 2021-01-10T01:25:19.123713+00:00 app[web.1]: Require stack: 2021-01-10T01:25:19.123713+00:00 app[web.1]: - /app/lib/middleware/auth-checker.js 2021-01-10T01:25:19.123714+00:00 app[web.1]: - /app/lib/routers/user.js 2021-01-10T01:25:19.123714+00:00 app[web.1]: - /app/index.js 2021-01-10T01:25:19.123714+00:00 app[web.1]: at Function.Modu
하지만 아무리 눈 씻고 찾아봐도 내 프로젝트상의 코드에는 문제가 없다. 파일을 임포트 한 파일 명도 문제 없고 파일도 지정된 경로에 있다.
이럴때는 heroku app 의 터미널을 열어본다. heroku run bash 명령어로 나의 애플리케이션 프로젝트 폴더의 터미널을 열어 볼 수 있다. 문제가 된 파일이 있는 경로로 이동하니까 파일 이름이 Errors.js 라고 돼있었다. Errors.js는 errors.js 전에 설정한 파일 명이다. 파일 이름 변경사항이 heroku 프로젝트에 반영이 되지 않아서 그렇다.
user@kwony ~ % heroku run bash -a mytrot-dev ~ $ cd lib/utils/ ~/lib/utils $ ls Errors.js jwt-utils.js trot-response.js
heroku의 문제라기 보다는 mac + git의 문제라고 보는게 맞다. 문제가 된 파일(Errors.js, errors.js)은 대소문자가 바뀐 것 빼고는 변경 사항이 없는데 mac의 git에서는 이런 파일 이름의 변경사항을 놓치고 있다.
이럴때는 파일 이름을 대소문자만 바꾸는게 아니라 다른 변경 사항도 추가한다거나, 아니면 파일 이름을 한단계 더 거쳐서 바꾸거나 아니면 git mv 로 일일이 파일 이름을 바꾸면 된다. 번거롭고 실수하기도 쉬운 부분인데.. 왜 이렇게 만들어놨지
mv Errors.js errors-temp.js mv errors-temp.js errors.js ---------------------------------- git mv -f OldFileNameCase newfilenamecase
'개발 > 삽질 기록' 카테고리의 다른 글
Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 15 path $.documents (0) 2021.03.15 git 에 올라간 파일 이름 확인하기 (0) 2021.01.26 error: internal/modules/cjs/loader.js:883 (0) 2020.12.14 visual code definition 찾고 돌아가기 (0) 2020.12.13 RxJava: mapper function returned null 에러 (0) 2020.02.14