* 해결은 되었으나 좀 허무함니다. 주의하슈 ^ㅁ^. 진짜 시행착오만 가득한 글입니다 . . . 결과는 맨 밑에 있습니다~!
상황 설명
- 나는 expo, node.js를 활용해서 어플을 만드는 중이였고, 그 중에서도 데이터베이스와 연동을 하기 위해 코드를 작성 중이였다. 전부터 의존성 문제로 뭔가 아슬아슬하게 통과되는 중인것 같았는데, 드디어 일이 일어난 것 같다.
- expo start 후 휴대폰으로 qr코드를 인식하면 업로딩되는데, 그거 끝나고 딱 나온게 저 오류다.
- timers 문제부터 생긴 게 아니라, 저 코드에 나와있는 것처럼 net, tls도 똑같은 문제를 겪었다.
- 저 const 어쩌구 코드는 프로그램에서 돌아가는 거 코드 같다. 여튼 내가 쓴 코드 절대 아니다.
- 협업 과정 중에서 서로 버전이 안 맞아서 이런 문제가 생긴건가 싶기도 하고.. (내가 다른 사람의 코드를 그대로 이어 받았다) 근데 또 찾아보니까 package-lock.json이 그런 문제들을 해결하려고 존재한다~ 뭐 이런 글도 있어서 잘 모르겠다. 아닌 거 같기도 하고.
더 잘 보이게 옮기면 이렇다.
Android Bundling failed 2369ms
Unable to resolve module timers from C:\(현재 폴더 경로)\node_modules\mysql2\lib\connection.js: timers could not be found within the project or in these directories:
node_modules\mysql2\node_modules
node_modules
..\..\node_modules
If you are sure the module exists, try these steps:
1. Clear watchman watches: watchman watch-del-all
2. Delete node_modules and run yarn install
3. Reset Metro's cache: yarn start --reset-cache
4. Remove the cache: rm -rf /tmp/metro-*
13 | const Net = require('net');
14 | const Tls = require('tls');
> 15 | const Timers = require('timers');
| ^
16 | const EventEmitter = require('events').EventEmitter;
17 | const Readable = require('stream').Readable;
18 | const Queue = require('denque');
- 만약 module 이 존재한다면 저렇게 하라고 자세히 나와있지만, 나는 모듈 자체가 존재하지 않는 경우였다. (폴더에 직접 찾아 들어가보기도 하고, package-lock.json에서 검색도 해봤는데 net이나 tls는 나오지만 timers는 안나오더라!)
그래서 일단 설치하고 보자..., 라는 마음으로 "npm install --save timers" 명령을 입력했다.
(net, tls 모두 이 방식을 사용했다. 결과는 밑의 사진과 같았다.. 매우 찝찝 ^^...,)
이것도 잘 보이게 옮기면 아래와 같다.
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: use-subscription@1.6.0
npm WARN Found: react@17.0.1
npm WARN node_modules/react
npm WARN peer react@">=16.0" from @react-native-community/masked-view@0.1.11
npm WARN node_modules/@react-native-community/masked-view
npm WARN @react-native-community/masked-view@"^0.1.11" from the root project
npm WARN 20 more (@react-native-seoul/kakao-login, ...)
npm WARN
npm WARN Could not resolve dependency:
npm WARN peer react@"^18.0.0" from use-subscription@1.6.0
npm WARN node_modules/use-subscription
npm WARN use-subscription@"^1.0.0" from react-native@0.64.3
npm WARN node_modules/react-native
npm WARN
npm WARN Conflicting peer dependency: react@18.1.0
npm WARN node_modules/react
npm WARN peer react@"^18.0.0" from use-subscription@1.6.0
npm WARN node_modules/use-subscription
npm WARN use-subscription@"^1.0.0" from react-native@0.64.3
npm WARN node_modules/react-native
npm WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. roblematic. See https://v8.dev/blog/math-random for details.
npm WARN deprecated sane@4.1.0: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added
npm WARN deprecated uglify-es@3.3.9: support for ECMAScript is superseded by `uglify-js` as of v3.13.0
added 214 packages, removed 103 packages, changed 87 packages, and audited 998 packages in 18s
37 packages are looking for funding
run `npm fund` for details
5 high severity vulnerabilities
번역기 돌리니까 이렇게 나왔다.
npm WARN ERESOLVE 피어 종속성 재정의
npm WARN 해결 중: use-subscription@1.6.0
npm 경고 발견: react@17.0.1
npm WARN 노드 모듈/반응
npm WARN peer react@">=16.0" @react-native-community/masked-view@0.1.11
npm WARN node_modules/@react-native-community/masked-view
npm WARN @react-native-community/masked-view@"^0.1.11" 루트 프로젝트에서
npm WARN 20 more (@react-native-seoul/kakao-login, ...)
npm 경고
npm WARN 종속성을 해결할 수 없습니다.
npm WARN 피어 react@"^18.0.0" from use-subscription@1.6.0
npm 경고 node_modules/use-subscription
npm WARN use-subscription@"^1.0.0" from react-native@0.64.3
npm WARN 노드 모듈/반응 네이티브
npm 경고
npm WARN 충돌하는 피어 종속성: react@18.1.0
npm WARN 노드 모듈/반응
npm WARN 피어 react@"^18.0.0" from use-subscription@1.6.0
npm 경고 node_modules/use-subscription
npm WARN use-subscription@"^1.0.0" from react-native@0.64.3
npm WARN 노드 모듈/반응 네이티브
모든 문제(브레이킹 체인지 포함)를 해결하려면 다음을 실행하세요.
npm 감사 수정 --force
- 나는 npm WARN이 뜨는 게 당연한 줄 알았는데,, 다른 사람 말 들어보니 그게 아니더라. 하하!! 매번 무시했었는데 이번에는 제대로 문제를 직시해보려고 한다.
- 맨 밑에 5 high severity vulnerailities는 취약점이 5개라는 건데,, 내가 사용하는 패키지 중에서 취약점이 있는 패키지가 5개정도 된다는 거 아닐까 싶다.
- 나는 종속성 문제가 아주 심각한 것으로 보인다.
- 대충 use-subscription이 문제인 것 같고, react도 뭔가 충돌이 좀 일어나는듯하다. 그리고 react는 버전이 두개인건지.. 숫자가 16도 있고 18도 있다. 리액트 버전차이인가? 하하!
timers 패키지를 설치한 후에 다시 expo를 실행시켰는데, 이번에도 그 밑에 있는 "EventEmitter"가 없다고 뜬다. 내 생각에는 이런 식이면 여차저차 끝이 나더라도 또 똑같은 일이 발생할 가능성이 높아보인다.
일단 지금 생각은, mysql 관련 코드만 딱 추가했는데 이런 오류가 뜨는 걸 보니까 mysql 관련 패키지를 잘 설치해주면 될 것 같은데 내가 종속성 문제가 있어서 패키지 설치가 제대로 안되는 것 같다. 그래서 mysql 관련 패키지 뭐가 따로 있는지 찾아보고 종속성 문제를 해결하던가 할 것 같다.
- 이후에 use0subscription이 버전이 낮아서 그런가? 라고 생각해서 업데이트하고 다시 실행시켰는데 똑같은 곳에서 똑같은 오류가 뜬다. 차라리 코드 오류가 뜨는 거면 백번 나을텐데 이건 뭐.. 백날천날 다운로드만 할 수도 없고 그냥 답이 없는 느낌!~
어짜피 뭘해도 본전이라는 마음으로
npm install -S mysql2
를 실행해보았다. 결과는!!?!?!
똑같다~ 하하...... 넘 피곤해서 머리도 안 돌아간다. 자야겠다 오늘은..ㅠㅠ 이 글은 언제 끝낼 수 있을까.. 계속 길어지기만 하네. 그냥.. 데이터베이스 코드 바꿔보고 해도 안된다. 코드 거기까지 닿지도 않고 모듈없어서 끝나나봐. 모듈 분명 설치했는데,, 왜 쟤는 없다고 뜰까? 하하~ 진짜 자야겠다. 4시가 다 되어가네 ㅎㅎ.. 눈이 감긴다. 내일은 꼭 다시 해서 끝내보자아 그래도 저 위치 경로에 들어가니까 코드가 생각보다 짧아서 위로가 되었다... 이거 맞냐..,,? 여기서 넘겨봤자 시한폭탄마냥 언제 터질 지 모르니까 그냥 빨리 해결하는 게 나은 거 아는데 그냥 넘어가버리고 싶은 마음도 있다. 그래도 삽질이더라도 끝까지 해보자 뭐라도 나오겠지 배우겠지.
다시 expo start 해서 실행해보니까 전에 안보이던 문구가 눈에 들어왔는데(밑에 사진), 그것도 종속성 문제에 관한 문구였다. 나는 원래 뜨는 건줄 알았는데 아닌가봐....^^ 그래서 저기 적혀있는말대로 expo doctor --fix-dependencies를 실행했는데!
결과는 똑같다. 그냥 모듈이 없다는 말만 계속한다. 하하
2022.7.25
이 글을 아마.. 5월에 써두고 임시저장함에만 보관해뒀던 것 같은데.. 이유는 팀원이 깃에 빠뜨리고 안올린게 있어서였다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 하나가 없으니까 이런저런 문제가 자꾸 발생했던 것으로 보인다. . . 리액트 네이티브 실행만 시키면 저게 떠서 너무 슬펐는데 해결되었으니 다행이다. 지금은 정말 잘 돌아간다. 다행이다 ^ㅁ^. 저 의존성은 그대로 뜨긴 하던데 뭐... 괜찮겠지~?
'TIL > 시행착오 모음' 카테고리의 다른 글
[Spring Boot] Postman 에 "Content type 'text/plain;charset=UTF-8' not supported" 뜰 때 해결 방법 (0) | 2022.09.03 |
---|---|
[Spring] Web server failed to start. Port 8080 was already in use. 에러뜰 때 (1) | 2022.06.09 |
[안드로이드 스튜디오] 자동인식 및 클래스 인식이 안될 때 해결 방법 (0) | 2022.03.14 |
npm, node.js, yarn 설치하다가 헤맨 내용 (0) | 2022.02.18 |