Нарушение Инварианта с Реактивно-нативным run-ios эксклюзивным - PullRequest
3 голосов
/ 22 марта 2019

Я пытаюсь внедрить act-native-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, я могу войти в представление, и отображается холст.Я пробовал автоматическое повторное связывание, переустановку, различные устройства и ручное повторное связывание, потому что те, где наиболее упоминается, исправляют проблемы такого типа.Но ничто не меняет исход для версии, сгенерированной с react-native run-ios.

Я почти уверен, что проблема где-то с моей связью act-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}/>
  );
 }
}

1 Ответ

2 голосов
/ 08 апреля 2019

Обычно такие проблемы вызваны неправильными связанными нативными зависимостями. Вы можете попробовать react-native link <package name>, но здесь это не так, потому что полностью сработало приложение.

Некоторые старые файлы сборки мешали разработке, и я решил эту проблему, удалив весь проект и снова клонировав его с помощью git. чтобы сделать это без git, вам нужно удалить все ваши файлы сборки в android / и ios / и удалить node_modules (это не нужно делать, но ради безопасности).

Если после этого у вас все еще возникают проблемы, вы можете подумать, что первой проблемой является представление вашего дела, особенно если вы не можете даже скомпилировать производственную сборку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...