React Native Unable to resolve module crypt의 대응 방법
3602 단어 Node.jsReact Nativetech
배경.
현재 관련 항목은 monorepo를 채택했습니다.
React, React Native, Node.js 등 여러 개의 포장이 있고 쌍방이 사용하고 싶은 처리 등은 모두 공동 포장에 놓여 있다.
이번에 범용 포장지에 사용
crypto.createCipheriv
된 파일을 올렸는데 그 결과 리액트 네이티브에서 오류가 발생했다.crypto는 Node입니다.암호화 js에 내장된 모듈입니다
오류 로그
error: Error: Unable to resolve module crypto from .../crypto.ts:
crypto could not be found within the project or in these directories:
../../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-*
> 1 | import crypto from "crypto";
까닭
React Native는 Node입니다.js에서 실행되지 않고 허메스와 자바스크립트 코어 등 자바스크립트 엔진을 사용하기 때문에 노드입니다.내장된 js 모듈이 실행되지 않습니다.통용되는 포장
crypto
을 사용했기 때문에 상술한 오류가 발생했다.대응 조사
crypto-js
createCipheriv
등 방법은 사용할 수 없습니다.react-native-crypto
react-native-crypto
에서 rn-nodeify
로 설치했지만 rn-nodeify
는 개작node_modules
중인 구조여서 모로포가 순조롭게 돌아가지 못했다.해결책
참고
react-native-crypto
중의 issue, metro.config.js
내의 extraNodeModules
중crypto-browserify,crypto를 추가하여 사용 가능, 이미 해결
resolver: {
extraNodeModules: {
crypto: require.resolve("crypto-browserify"),
stream: require.resolve("readable-stream"),
},
},
crypto-browserify
내부에서stream
사용하기 때문에 추가readable-stream
이번에는 사용react-native-crypto
이 아니라 사용crypto-browserify
했다.react-native-crypto
에서는 가져오기react-native-randombyte
가 필요하지만 로컬 모듈을 사용했기 때문에 pod install
등의 조작이 필요하기 때문에 성능이 좋을 것입니다.총결산
React Native crypto
등 단어로 검색하는 방법도 다양하고 오래된 정보도 있어 해결하기 어렵다.Node.React Native 등 js를 사용하는 crypto가 있다면 참고할 수 있을 것 같습니다.
Reference
이 문제에 관하여(React Native Unable to resolve module crypt의 대응 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/hyuba7/articles/a1acd788583a93텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)