-
React Native EISDIR: illegal operation on a directory해결된 문제들 2021. 5. 12. 06:57
React Native 프로젝트를 진행하다가
다른 팀원이 commit 한 것을 pull 한 이후로 EISDIR: illegal operation on a directory 에러가 떴다.
파일이어야 하는 위치에 폴더가 있어서 생기는 에러라고 하는데
나말고 다른 팀원들은 멀쩡했기 때문에 어디가 문제인지 짐작도 가지 않았다.
EISDIR 에러는 '무엇이 문제라서 에러가 난 것인지'를 정확하게 알려주지 않았다.
github.com/itinance/react-native-fs/issues/991
위 링크를 참고하여 node_modules/metro/src/node-haste/DependencyGraph/ModuleResoultion.js
의 buildCodeFrameMessage() 함수를 약간 수정하면 에러에 대해 자세히 알수 있다는 것을 알게되었다.
다른 팀원들은 멀쩡하고 나에게만 뜨는 에러였기때문에 patch-package는 하지 않았다.
//node_modules/metro/src/node-haste/DependencyGraph/ModuleResoultion.js //수정 전 buildCodeFrameMessage() { let file; try { file = fs.readFileSync(this.originModulePath, "utf8"); } catch (error) { if (error.code === "ENOENT") { // We're probably dealing with a virtualised file system where // `this.originModulePath` doesn't actually exist on disk. // We can't show a code frame, but there's no need to let this I/O // error shadow the original module resolution error. return null; } throw error; }
//수정 후 buildCodeFrameMessage() { let file; try { file = fs.readFileSync(this.originModulePath, "utf8"); } catch (error) { if (error.code === "ENOENT" || error.code === 'EISDIR') { //'EISDIR' 에 대해 자세한 정보 throw 하도록 수정 // We're probably dealing with a virtualised file system where // `this.originModulePath` doesn't actually exist on disk. // We can't show a code frame, but there's no need to let this I/O // error shadow the original module resolution error. return null; } throw error; }
그리고 다시 yarn start 한 후 콘솔을 확인해보니 나는 debugger-ui 가 문제였다.
찾아보니 package-lock.json 삭제 후 재설치하면 된다고한다.
package-lock.json 을 삭제하고 npm i 를 통해 재설치,
yarn start 실행하니 에러 없이 잘 돌아간다.
'해결된 문제들' 카테고리의 다른 글
[해결된 문제] Chrome extension service worker inactive (0) 2021.06.04 React Native version mismatch // 해결 (0) 2021.03.08