App Clip с EXPO React Native не нашел имя модуля точки входа приложения?

avatar
Davide Michelotti
1 июля 2021 в 17:14
269
1
1

Я пытаюсь интегрировать функцию App Clip в свое приложение, разработанное в React Native с помощью EXPO.

Я заявляю, что я уже интегрировал функцию App Clip в проект React Native без EXPO, и у меня не было серьезных проблем, а с expo у меня возникла проблема, которую я не могу решить.

Я получаю эту ошибку в файле main.m:

Нарушение инварианта: "ReactNativeTest" не зарегистрирован. Это может произойти, если:

  • Metro (локальный сервер разработки) запускается из неправильной папки. Проверьте, запущен ли Metro, остановите его и перезапустите в текущем проекте.
  • Не удалось загрузить модуль из-за ошибки, и AppRegistry.registerComponent не был вызван.

Я полагаю, что проблема связана с файлом ViewController.m в этой точке:

// moduleName corresponds to the appName used for the
// app entry point in "index.js"
RCTRootView *rootView = [[RCTRootView alloc]
initWithBundleURL:jsCodeLocation moduleName:@"ReactNativeTest"
initialProperties:nil launchOptions:nil];

В проекте без EXPO имя_модуля для точки входа приложения в "index.js" будет следующим

enter image description here

но в данном случае это не работает, у вас есть решение?

Источник
GRZa
28 января 2022 в 17:54
0

Как вы получили доступ к собственным файлам iOS? Вы выбросили экспо? Спасибо.

Ответы (1)

avatar
Davide Michelotti
2 июля 2021 в 15:07
1

Хорошо, я нашел решение сам, если кому нужно, я выполнил следующие шаги:

В index.appclip.js я изменил его следующим образом:

import { AppRegistry, View, Text } from 'react-native';
import { name as appName } from './app.json';
import React from 'react';

const AppClip = () => (
  <View style={{
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
    backgroundColor: "#BFEFFF"
  }}>
    <Text style={{
      fontSize: 26,
      color: "#204080"
    }}>Hello React Native App Clip</Text>
  </View>
);

AppRegistry.registerComponent(appName, () => AppClip);

к этому:

import { View, Text } from 'react-native';
import { registerRootComponent } from 'expo';
import React from 'react';

const AppClip = () => (
  <View style={{
    flex: 1,
    justifyContent: "center",
    alignItems: "center",
    backgroundColor: "#BFEFFF"
  }}>
    <Text style={{
      fontSize: 26,
      color: "#204080"
    }}>Hello React Native App Clip</Text>
  </View>
);

registerRootComponent(AppClip);

и имя модуля для точки входа приложения в "index.js" является "основным", поэтому я изменил ViewController.m следующим образом:

// moduleName corresponds to the appName used for the
// app entry point in "index.js"
RCTRootView *rootView = [[RCTRootView alloc]
initWithBundleURL:jsCodeLocation moduleName:@"main"
initialProperties:nil launchOptions:nil];