react-native 运行-ios exclusive 的不变违规
Invariant Violation with react-native run-ios exclusive
我尝试在我的应用程序中实现 react-native-canvas。
在进入包含 canvas 的屏幕时,在使用 react-native run-ios
生成的版本中,我收到以下错误:
Invariant Violation: requireNativeComponent: "RNCWKWebView" was not found in the UIManager.
This error is located at:
in RNCWKWebView (at WebView.ios.js:297)
in RCTView (at View.js:45)
in View (at WebView.ios.js:300)
in WebView (at Canvas.js:148)
in RCTView (at View.js:45)
in View (at Canvas.js:147)
in Canvas (at LapDetails.tsx:47)
in RCTView (at View.js:45)
in View (at LapDetails.tsx:38)
in LapDetails (at ComponentWrapper.js:29)
in WrappedComponent (at renderApplication.js:34)
in RCTView (at View.js:45)
in View (at AppContainer.js:98)
in RCTView (at View.js:45)
in View (at AppContainer.js:115)
in AppContainer (at renderApplication.js:33)
getNativeComponentAttributes
a90c6db6-7158-4812-8a98-ea48c1a859f3:49643:5
<unknown>
a90c6db6-7158-4812-8a98-ea48c1a859f3:49596:14
Object.exports.get
a90c6db6-7158-4812-8a98-ea48c1a859f3:43914:20
createInstance
a90c6db6-7158-4812-8a98-ea48c1a859f3:22099:56
completeWork
a90c6db6-7158-4812-8a98-ea48c1a859f3:28453:34
completeUnitOfWork
a90c6db6-7158-4812-8a98-ea48c1a859f3:30472:32
performUnitOfWork
a90c6db6-7158-4812-8a98-ea48c1a859f3:30635:18
workLoop
a90c6db6-7158-4812-8a98-ea48c1a859f3:30645:30
renderRoot
a90c6db6-7158-4812-8a98-ea48c1a859f3:30716:13
第二次进入视图时出错:
Invariant Violation: View config not found for name RNCWKWebView.
This error is located at:
in RNCWKWebView (at WebView.ios.js:297)
in RCTView (at View.js:45)
in View (at WebView.ios.js:300)
in WebView (at Canvas.js:148)
in RCTView (at View.js:45)
in View (at Canvas.js:147)
in Canvas (at LapDetails.tsx:47)
in RCTView (at View.js:45)
in View (at LapDetails.tsx:38)
in LapDetails (at ComponentWrapper.js:29)
in WrappedComponent (at renderApplication.js:34)
in RCTView (at View.js:45)
in View (at AppContainer.js:98)
in RCTView (at View.js:45)
in View (at AppContainer.js:115)
in AppContainer (at renderApplication.js:33)
Object.exports.get
ReactNativeViewConfigRegistry.js:94:6
createInstance
ReactNativeRenderer-dev.js:3946:49
completeWork
ReactNativeRenderer-dev.js:13385:25
completeUnitOfWork
ReactNativeRenderer-dev.js:15892:25
performUnitOfWork
ReactNativeRenderer-dev.js:16103:11
workLoop
ReactNativeRenderer-dev.js:16115:23
renderRoot
ReactNativeRenderer-dev.js:16219:6
performWorkOnRoot
ReactNativeRenderer-dev.js:17198:6
performWork
ReactNativeRenderer-dev.js:17099:6
现在是有趣的部分。当我 运行 应用程序完全从 XCode 构建时,我可以进入视图并显示 canvas。
我尝试了自动重新链接、重新安装、不同的设备和手动重新链接,因为那些提到最多的修复了该类型的问题。但是没有任何改变 react-native run-ios
.
生成的版本的结果
我很确定问题出在我链接 react-native-webview 的某个地方,但我不知道在哪里,我基本上做了安装指南提到的所有事情...
我的 android 项目目前已损坏,因此我无法提供有关 android 行为的其他信息。
如果您想知道这是视图:
import React, { Component } from 'react';
import Canvas from 'react-native-canvas';
class App extends Component {
handleCanvas = (canvas) => {
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'purple';
ctx.fillRect(0, 0, 100, 100);
}
render() {
return (
<Canvas ref={this.handleCanvas}/>
);
}
}
通常像这样的问题是由不正确的链接本机依赖项引起的。您可以尝试 react-native link <package name>
,但这里似乎并非如此,因为完全构建的应用程序有效。
一些旧的构建文件干扰了开发构建,我通过删除整个项目并再次使用 git 克隆它解决了这个问题。要在没有 git 的情况下执行此操作,您需要删除 android/ 和 ios/ 中的所有构建文件并删除 node_modules (这不是必须完成的但为了安全起见)。
如果在此之后您仍然遇到问题,您可能会认为第一个问题代表了您的情况,尤其是如果您甚至无法编译生产版本。
我尝试在我的应用程序中实现 react-native-canvas。
在进入包含 canvas 的屏幕时,在使用 react-native run-ios
生成的版本中,我收到以下错误:
Invariant Violation: requireNativeComponent: "RNCWKWebView" was not found in the UIManager.
This error is located at:
in RNCWKWebView (at WebView.ios.js:297)
in RCTView (at View.js:45)
in View (at WebView.ios.js:300)
in WebView (at Canvas.js:148)
in RCTView (at View.js:45)
in View (at Canvas.js:147)
in Canvas (at LapDetails.tsx:47)
in RCTView (at View.js:45)
in View (at LapDetails.tsx:38)
in LapDetails (at ComponentWrapper.js:29)
in WrappedComponent (at renderApplication.js:34)
in RCTView (at View.js:45)
in View (at AppContainer.js:98)
in RCTView (at View.js:45)
in View (at AppContainer.js:115)
in AppContainer (at renderApplication.js:33)
getNativeComponentAttributes
a90c6db6-7158-4812-8a98-ea48c1a859f3:49643:5
<unknown>
a90c6db6-7158-4812-8a98-ea48c1a859f3:49596:14
Object.exports.get
a90c6db6-7158-4812-8a98-ea48c1a859f3:43914:20
createInstance
a90c6db6-7158-4812-8a98-ea48c1a859f3:22099:56
completeWork
a90c6db6-7158-4812-8a98-ea48c1a859f3:28453:34
completeUnitOfWork
a90c6db6-7158-4812-8a98-ea48c1a859f3:30472:32
performUnitOfWork
a90c6db6-7158-4812-8a98-ea48c1a859f3:30635:18
workLoop
a90c6db6-7158-4812-8a98-ea48c1a859f3:30645:30
renderRoot
a90c6db6-7158-4812-8a98-ea48c1a859f3:30716:13
第二次进入视图时出错:
Invariant Violation: View config not found for name RNCWKWebView.
This error is located at:
in RNCWKWebView (at WebView.ios.js:297)
in RCTView (at View.js:45)
in View (at WebView.ios.js:300)
in WebView (at Canvas.js:148)
in RCTView (at View.js:45)
in View (at Canvas.js:147)
in Canvas (at LapDetails.tsx:47)
in RCTView (at View.js:45)
in View (at LapDetails.tsx:38)
in LapDetails (at ComponentWrapper.js:29)
in WrappedComponent (at renderApplication.js:34)
in RCTView (at View.js:45)
in View (at AppContainer.js:98)
in RCTView (at View.js:45)
in View (at AppContainer.js:115)
in AppContainer (at renderApplication.js:33)
Object.exports.get
ReactNativeViewConfigRegistry.js:94:6
createInstance
ReactNativeRenderer-dev.js:3946:49
completeWork
ReactNativeRenderer-dev.js:13385:25
completeUnitOfWork
ReactNativeRenderer-dev.js:15892:25
performUnitOfWork
ReactNativeRenderer-dev.js:16103:11
workLoop
ReactNativeRenderer-dev.js:16115:23
renderRoot
ReactNativeRenderer-dev.js:16219:6
performWorkOnRoot
ReactNativeRenderer-dev.js:17198:6
performWork
ReactNativeRenderer-dev.js:17099:6
现在是有趣的部分。当我 运行 应用程序完全从 XCode 构建时,我可以进入视图并显示 canvas。
我尝试了自动重新链接、重新安装、不同的设备和手动重新链接,因为那些提到最多的修复了该类型的问题。但是没有任何改变 react-native run-ios
.
我很确定问题出在我链接 react-native-webview 的某个地方,但我不知道在哪里,我基本上做了安装指南提到的所有事情...
我的 android 项目目前已损坏,因此我无法提供有关 android 行为的其他信息。
如果您想知道这是视图:
import React, { Component } from 'react';
import Canvas from 'react-native-canvas';
class App extends Component {
handleCanvas = (canvas) => {
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'purple';
ctx.fillRect(0, 0, 100, 100);
}
render() {
return (
<Canvas ref={this.handleCanvas}/>
);
}
}
通常像这样的问题是由不正确的链接本机依赖项引起的。您可以尝试 react-native link <package name>
,但这里似乎并非如此,因为完全构建的应用程序有效。
一些旧的构建文件干扰了开发构建,我通过删除整个项目并再次使用 git 克隆它解决了这个问题。要在没有 git 的情况下执行此操作,您需要删除 android/ 和 ios/ 中的所有构建文件并删除 node_modules (这不是必须完成的但为了安全起见)。
如果在此之后您仍然遇到问题,您可能会认为第一个问题代表了您的情况,尤其是如果您甚至无法编译生产版本。