콘텐츠
electron-builder 를 통해 패키징을 하던 도중 계속 EBUSY: resource busy or locked 오류가 발생 했다. 아무리 구글링 해도 ChatGPT 도 바로 해결 방법을 알려주지 못했다. 그래서 이것저것 시도 한 해결 과정과 해결 방법을 정리했다.
오류 내용:
⨯ EBUSY: resource busy or locked, copyfile ‘E:\Programing\VSCode\image-to-webp-project\node_modules\@colors\colors\lib\index.js’ -> ‘E:\Programing\VSCode\image-to-webp-project\dist\win-unpacked\resources\app\node_modules\@colors\colors’
@colors\colors 모듈 재설치
오류가 발생하고 있는 경로는 @colors 모듈 경로를 가리키고 있어 재 설치를 해보았다.
npm remove @color
npm install @color
Node.js하지만 소용이 없었다. 이상했다. 아예 폴더 채 삭제하고 다시 설치 하는데 어떻게 오류가 발생하는 걸까?
“asar”: true 옵션 사용
asar 는 Atom Shell Archive 의 약자로 Electron 앱의 리소스 들이 패키징 되는 파일 포맷이다. 반디집이 설치 된 윈도우 PC 에선 압축 파일로 표시 되던데 안에 보면 내가 작성한 코드와 모듈들이 asar 확장자 파일 안에 들어있다.
이 옵션을 사용하면 위의 에러가 해결 되면서 앱이 패키징 되었지만, 아쉽게도 해당 파일은 ‘읽기 전용’ 이라 수정/저장 등의 작업이 이루어 질 경우 정상적으로 앱이 동작하지 않을 수 있다. 그래서 해당 옵션을 사용하지 않고 전부 풀어진 상태로 제작하고 싶다.
electron-builder 다운그레이드 – ⭐
이전에는 이런 이슈가 발생하지 않고 새로운 프로젝트에서 발생 했으니 마지막으로 의심 했던 부분이다. 먼저 현재 설치 된 모듈의 버전을 확인하고 싶으면 npm list 명령어를 사용해 볼 수 있다.
npm list electron-builder
Node.js위의 명령어를 수행하니 내 프로젝트에 설치 된 electron-builder 버전은 25.0.0-alpha.9 였다. 뭔가 alpha 라는 것이 최근 25 버전의 최신 버전으로 업데이트 가 된 모양이다. 왠지 이 문제 같았다.
그래서 예전 버전을 설치하기 위해 위에서 사용했던 remove 명령어로 electron-builder 를 삭제 후 예전 버전으로 설치 했다. 만약, 내가 사용 하는 모듈의 모든 버전 목록을 보고 싶다면 npm info 모듈 명 versions 명령어로 확인이 가능하다.
npm info electron-builder versions
Node.js출력 된 버전 중 현재 버전을 제외하고 24.13.1 버전이 최신 버전 이여서 해당 버전으로 다시 설치를 시도 했다. 특정 버전의 모듈을 설치 하려면 npm install 시 모듈 명 뒤에 @version 을 입력하면 된다.
npm install electron-builder@24.13.1
Node.js그 후 다시 패키징을 시도하니 문제 없이 저장 되었다. 👍
GitHub 이슈 등록
GitHub 의 electron-builder 이슈 탭에 위의 오류 내용을 등록 했다. 일단 임시 방편으로 이전 버전의 electron-builder 를 사용해야겠다.