You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Expo Go集成RNSkia遇Native模块未找到等错误求助

解决Expo Go中使用RNSkia遇到的Native模块缺失及"main"未注册问题

一、解决"Native RNSkia Module cannot be found"错误

你当前的版本组合(expo ~48.0.6、@shopify/react-native-skia 0.1.172、react-native 0.71.8)是兼容的,但Expo Go无法直接运行包含RNSkia的项目——因为RNSkia包含原生依赖,而Expo Go的预构建包并未集成它。必须使用Expo Dev Client来构建自定义客户端:

  1. 安装Expo Dev Client依赖
npx expo install expo-dev-client
  1. 配置项目插件
    在app.json或app.config.js的expo.plugins数组中添加RNSkia的插件配置:
{
  "expo": {
    // ...其他配置
    "plugins": [
      "@shopify/react-native-skia",
      "expo-dev-client"
    ]
  }
}
  1. 构建自定义Dev Client
    根据你的目标平台运行命令,生成包含RNSkia原生模块的客户端:
# Android
npx expo run:android

# iOS
npx expo run:ios
  1. 启动项目并使用自定义客户端
    用Dev Client模式启动Metro服务器:
npx expo start --dev-client

然后在刚构建好的自定义客户端中打开你的项目,此时原生模块应该能正常加载。

二、解决"Invariant Violation: 'main' has not been registered"错误

这个错误大多是第一个问题导致的模块加载失败,进而使AppRegistry未正确执行注册。解决完上述RNSkia模块问题后,大概率会自动修复。如果仍出现该错误,可尝试以下操作:

  • 清除项目缓存,强制重新加载所有模块:
npx expo start --clear
  • 检查入口文件(index.js或App.js)是否正确注册了主组件:
    确保文件末尾存在类似代码:
import { AppRegistry } from 'react-native';
import App from './App';
import { name as appName } from './app.json';

AppRegistry.registerComponent(appName, () => App);
  • 验证Metro配置文件(metro.config.js)是否正确,确保未排除RNSkia相关文件。如果需要,可添加如下配置:
const { getDefaultConfig } = require('expo/metro-config');

const config = getDefaultConfig(__dirname);

// 确保RNSkia的文件能被正确解析
config.resolver.sourceExts.push('skia');

module.exports = config;

内容的提问来源于stack exchange,提问作者Strike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 19:03:14