티스토리 뷰

문제점

npm run build 명령을 통해서, Vue Cli로 만든 프로젝트를 빌드하려했는데...

Accessing non-existent property 'cd' of module exports inside circular dependency

Accessing non-existent property 'chcmod' of module exports inside circular dependency

Accessing non-existent property 'cp' of module exports inside circular dependency

.....

위와 같은 메세지가 콘솔창에 가득차며 되게 에러처럼 보이는 무언가를 뱉어낸다.

물론 이 메시지가 끝난 이후에도 build가 정상적으로 끝난 것처럼 정적 리소스들과 파일들의 용량 및 생성위치는 콘솔에 채워진다. 하지만...역시 찝찝하지 않은가? 저토록 많은 Warning이라니...

 

해결법

콘솔창에 가득찬 메시지를 보면 뭔가 되게 익숙한 키워드들이 보인다.

rm, cd, chmod, popd, echo...쉘 명령어같이 생긴 키워드들이다.

 

구글링을 열심히해보니, 위와 같은 메시지를 본 사람이 가득했고

공통적으로 node.js 버전이 14.x 대인 사람들이 해당 이슈를 겪는걸로 보였다.

 

나또한 이번에 노트북을 바꾸면서 node.js 버전을 14로 올린 이후에 저런 메시지가 npm run build시에 발생했고 node.js 12.x 버전이 설치된 기존 노트북에서는 다시 실행해봐도 저런 메시지가 나오지 않았다.

 

 그리고 좀 더 찾아보니...

github.com/release-it/release-it/pull/652

 

Update `shelljs` dependency by ehmicky · Pull Request #652 · release-it/release-it

release-it currently prints the following warnings in Node 14: (node:32597) Warning: Accessing non-existent property 'cat' of module exports inside circular dependency at emitCircularRe...

github.com

이런 내용의 릴리즈 내용이 있었다.

 

결론적으로 말하자면 node.js로부터 의존성(dependency)이 걸린 shell.js의 버전이 0.7.x대일때 node.js 14.x와 호환시 이슈가 있었고, 해당 이슈는 shell.js의 0.8.4 버전에서 fix되었다는 내용이었다. 그래서 package-lock.json을 열어서 확인해보니...나한테 설치된 shell.js가 0.7.8 이었다.

 

그래서 package-lock.json에서 shell.js 항목을 지운 뒤(혹여나 캐시처리되서 0.7.8이 재설치될까봐),

package.json의 devDependencies에 아래와 같이 shell.js의 버전을 명시하여 npm install을 재실행하였고

 "shelljs": "^0.8.4",

그 결과 npm run build를 실행해도 위와 같은 Warning 메시지가 생성되지 않았다.

댓글
최근에 올라온 글
Total
Today
Yesterday