woojin
woojin2mo ago

RNCTPWebViewModule 이슈 해결 문의

안녕하세요, 현재 granhas3v1 개발사인데요, "react": "19.0.0", "react-native": "0.79.5", tosspayments-react-native-webview @1.0.0 @tosspayments/widget-sdk-react-native@1.4 "react-native-webview": "^13.15.0", 로 설치해서 사용중인데, 계속 iOS Bundled 750ms index.js (1468 modules) ERROR Invariant Violation: TurboModuleRegistry.getEnforcing(...): 'RNCTPWebViewModule' could not be found. Verify that a module by this name is r... 이 에러로 빌드가 안되네요... 기존 설치돼 있는 webview와 충돌인지 아니면 다른 포스트 보니 react-native 0.78 버전 호환이 안된다는걸 봤는데 react-native 버전과 관련이 있는건가요?
8 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
Minsu Kim
Minsu Kim2mo ago
네 현재 지원되지 않습니다. 금주 중 배포예정인데 급하시면 아래와 같이 라이브러리 내 코드를 직접 로컬에서 수정해주세요.
1. loadUrl 메서드 수정 (line 335-344)

Before:
"loadUrl" -> {
if (args == null) {
throw RuntimeException("Arguments for loading an url are null!")
}
webView.progressChangedFilter.setWaitingForCommandLoadUrl(false)
webView.loadUrl(args.getString(0)) // 수정위치
}

After:
"loadUrl" -> {
if (args == null) {
throw RuntimeException("Arguments for loading an url are null!")
}
webView.progressChangedFilter.setWaitingForCommandLoadUrl(false)
val url = args.getString(0)
if (url != null) {
webView.loadUrl(url) // <= null 체크 후 안전하게 호출
}
}

2. injectJavaScript 메서드 수정 (line 334-339)

Before:
"injectJavaScript" ->
webView.evaluateJavascriptWithFallback(args.getString(0)) // ❌ null 체크 없음

After:
"injectJavaScript" -> {
val js = args?.getString(0)
if (js != null) {
webView.evaluateJavascriptWithFallback(js) // <= null 체크 후 안전하게 호출
}
}
1. loadUrl 메서드 수정 (line 335-344)

Before:
"loadUrl" -> {
if (args == null) {
throw RuntimeException("Arguments for loading an url are null!")
}
webView.progressChangedFilter.setWaitingForCommandLoadUrl(false)
webView.loadUrl(args.getString(0)) // 수정위치
}

After:
"loadUrl" -> {
if (args == null) {
throw RuntimeException("Arguments for loading an url are null!")
}
webView.progressChangedFilter.setWaitingForCommandLoadUrl(false)
val url = args.getString(0)
if (url != null) {
webView.loadUrl(url) // <= null 체크 후 안전하게 호출
}
}

2. injectJavaScript 메서드 수정 (line 334-339)

Before:
"injectJavaScript" ->
webView.evaluateJavascriptWithFallback(args.getString(0)) // ❌ null 체크 없음

After:
"injectJavaScript" -> {
val js = args?.getString(0)
if (js != null) {
webView.evaluateJavascriptWithFallback(js) // <= null 체크 후 안전하게 호출
}
}
woojin
woojinOP2mo ago
확인ㅆ습니다. 우선 첨부주신 코드로 빌드해보고, 이번주중으로 배포되면 새로 해보겠습니다. 그러면 앞으로도 tosspayments-react-native-webview 이 라이브러리는 설치하지 않아도 되는건가요?
Minsu Kim
Minsu Kim2mo ago
네 아예 해당 라이브러리 종속성이 폐기될 예정입니다.
woojin
woojinOP2mo ago
네 확인 감사합니다.
Minsu Kim
Minsu Kim2mo ago
@woojin 수정해야하는 부분 파일을 명확히 전달드리는게 좋을 것 같아서 남겨드려요. tosspayments-react-native-webview@1.0.1 (1.0.0아님, 1.0.0이면 업데이트 후 수정)을 node_modules에서 찾아서 -> android/src/main/java/com/reactnativecommunity/tpwebview/RNCWebViewManagerImpl.kt *tosspayments-react-native-webview는 금주 배포 이후 폐기되는 것이고, 현재는 종속성이 아직 원래 sdk에 있기때문에 삭제하시면 안됩니다. 오해가 있을 수 있어서 정정드립니다.
woojin
woojinOP2mo ago
정확히 확인했습니다. 감사합니다.
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?