# General Translation React SDKs (gt-react, gt-next, gt-react-native): React Native 故障排除
URL: https://generaltranslation.com/zh/docs/react/react-native/troubleshooting.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 如何诊断 React Native app 中的原生模块、polyfill、区域设置、翻译文件和开发问题。

先查看 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
<T $context="the technology company">Apple</T>
```

[`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

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
