# General Translation React SDKs (gt-react, gt-next, gt-react-native): React Native 故障排除 URL: https://generaltranslation.com/zh/docs/react/react-native/troubleshooting.mdx --- title: React Native 故障排除 description: 如何诊断 React Native app 中的原生模块、polyfill、区域设置、翻译文件和开发问题。 related: links: - /docs/react/guides/configuring - /docs/react/guides/storing-translations - /docs/react/guides/managing-locales - /docs/react/guides/translating-jsx --- 先查看 Metro 或设备显示的错误,再检查相应的配置层:原生链接、Babel polyfill、区域设置配置或生成的翻译文件。 ## 修复原生模块 [#native-module] 如果出现提示找不到 `GtReactNative` 的错误,说明已安装的应用二进制文件中未包含该原生模块。 ### Expo Expo Go 无法加载自定义原生模块。请创建并运行开发版本: ```bash npx expo run:ios # 或者 npx expo run:android ``` 添加或升级 `gt-react-native` 后,请重新构建开发客户端。仅重启 Metro 不会更新现有二进制文件中的原生模块。 ### React Native CLI 添加该 package 后,安装 iOS pods,然后重新构建应用: ```bash cd ios pod install cd .. ``` 如果仍找不到该模块,请从模拟器或设备中删除之前的应用,然后重新进行一次原生构建。 *注意:React Native Web 不需要原生模块,而是使用浏览器的区域设置检测和存储机制。* ## 修复 polyfill 设置 [#polyfills] 如果应用提示区域设置代码无效或缺少 `Intl` API,请确认 [Babel 插件](/docs/react/react-native/plugin) 作用于应用实际使用的入口文件。 * Expo Router 通常使用 `require.resolve('expo-router/entry')`。 * bare React Native app 通常使用 `index.js` 的绝对路径。 * 必须通过 `entryPointFilePath` 传入自定义入口文件。 该插件需要默认区域设置和所有目标区域设置。可直接传入 `locales` 或 `config`,也可将 `configFilePath` 设为可读取的 `gt.config.json`。该插件仅会为受支持的规范区域设置代码加载 FormatJS 区域设置数据;如果应用通过自定义别名进行路由,请将其规范代码传给该插件。 更改 Babel 配置后,请清除 Metro 的转换缓存: ```bash npx expo start --clear ``` 对于 bare React Native 应用,请重启 Metro 并重置其缓存: ```bash npx react-native start --reset-cache ``` 如果 Babel 无法在你的项目中运行,请参阅 [插件参考](/docs/react/react-native/plugin#how-it-works)中的手动导入示例。 ## 生成缺失文件 [#missing-files] Metro 会在应用启动前解析静态 `require()` 调用。你在 [`loadTranslations`](/docs/react/reference/functions/load-translations) 映射中指定的每个翻译文件都必须已存在。 无需 API Key 即可生成包含源内容的占位符文件: ```bash npx gt generate ``` 或者使用项目凭据生成翻译后的文件: ```bash npx gt translate ``` 确保 `gt.config.json` 中的 CLI 输出路径与 `loadTranslations.ts` 中的路径一致。添加之前不存在的文件后,重启 Metro。 ## 了解开发环境下的行为 [#development] 开发环境中的运行时翻译在首次打开某个区域设置时可能耗时更长,因为应用会请求未缓存的翻译内容。生产构建应提前运行 [`npx gt translate`](/docs/cli/reference/commands/translate),并在本地加载生成的文件。 如果翻译不准确,请为语义有歧义的内容添加上下文: ```tsx Apple ``` [`useGT`](/docs/react/reference/hooks/use-gt) 翻译函数接受同样的 `$context` 选项。 目前不明确支持服务器端 React Native 环境。如果 Expo Web 或 React Native Web 构建会在服务器端渲染,请在部署前测试该运行时中的区域设置检测和存储行为。 ## Next steps - /docs/react/guides/configuring - /docs/react/guides/storing-translations - /docs/react/guides/managing-locales - /docs/react/guides/translating-jsx