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

Expo 49 + TypeScript项目中react-hook-form无法解析问题求助

Expo 49 + TypeScript 引入react-hook-form后模块解析错误解决方案

问题现象

  • 从SignUpScreen.tsx导入react-hook-form时提示无法解析
  • @hookform/error-message和@hookform/resolvers/yup因无法解析react-hook-form报错
  • Web端出现500内部服务器错误及MIME类型问题
  • Android端卡在启动页
  • 已尝试删除node_modules重装、修改metro配置并清理缓存、重新安装相关包,问题未解决

解决方案

1. 补全缺失的依赖

你的package.json中缺少yup依赖,yupResolver必须依赖yup才能正常工作,执行安装命令:

npm install yup
# 或 yarn add yup

2. 调整Metro配置

当前metro.config.ts的sourceExts包含冗余默认扩展名,且错误添加了.d.ts类型文件,会干扰模块解析。修改为:

const { getDefaultConfig } = require("expo/metro-config");

module.exports = (() => {
  const config = getDefaultConfig(__dirname);
  const { transformer, resolver } = config;
  config.transformer = {
    ...transformer,
    babelTransformerPath: require.resolve("react-native-svg-transformer")
  };
  config.resolver = {
    ...resolver,
    assetExts: resolver.assetExts.filter((ext: any) => ext !== "svg"),
    // 仅添加默认不包含的扩展名,移除.d.ts
    sourceExts: [...resolver.sourceExts, "svg", "cjs", "mjs"]
  };
  
  return config;
})();

3. 修复TypeScript模块解析配置

确保tsconfig.json的模块解析配置适配ESM模块:

{
  "compilerOptions": {
    "moduleResolution": "NodeNext",
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "skipLibCheck": true
  }
}

4. 彻底清理缓存

执行以下命令清理所有相关缓存:

# 清理Expo和Metro缓存
npx expo start --clear

# 删除Expo缓存文件夹
rm -rf .expo

# 删除TypeScript编译缓存文件
rm tsconfig.tsbuildinfo

# 清理Metro临时缓存(Mac/Linux)
rm -rf $TMPDIR/metro-*

# Windows用户执行:
# rd /s /q %TMPDIR%\metro-*

5. 适配Web端MIME类型问题

创建webpack.config.js文件,添加对ESM模块的支持:

const createExpoWebpackConfigAsync = require('@expo/webpack-config');

module.exports = async function (env, argv) {
  const config = await createExpoWebpackConfigAsync(env, argv);
  // 添加ESM扩展名支持
  config.resolve.extensions.push('.mjs', '.cjs');
  return config;
};

6. 验证依赖版本兼容性

如果以上步骤无效,尝试降级@hookform/resolvers到v2版本(适配Expo 49的CommonJS模块处理):

npm install @hookform/resolvers@2.9.11
# 或 yarn add @hookform/resolvers@2.9.11

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:57:29