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

React Native升级到0.79.1后出现Hermes引擎JS编译错误(import声明需在模块顶级)

React Native升级到0.79.1后出现Hermes引擎JS编译错误(import声明需在模块顶级)

兄弟,太懂你升级RN版本踩坑的糟心了!这个问题其实是RN 0.79版本升级后,Hermes引擎启用了更严格的ES模块规范检查导致的——现在它要求所有import语句必须放在文件的最顶级位置,绝对不能嵌套在条件判断、函数或者任何代码块里。

给你整理几个实用的解决步骤:

  • 先定位问题代码:全局搜一遍你的项目,看看有没有类似下面的错误写法:

    // ❌ 错误:import嵌套在条件判断里
    if (Platform.OS === 'ios') {
      import IOSComponent from './IOSComponent';
    }
    
    // ❌ 错误:import放在函数内部
    function initModule() {
      import Utils from './utils';
    }
    
  • 针对性修复:

    1. 静态导入必须移到顶部:如果是固定需要导入的模块,直接把import移到文件第一行(注释除外)的位置。
    2. 动态场景改用动态导入:如果是需要按需加载的模块,别用静态import,改用import()异步语法,示例:
      // ✅ 正确:动态导入写法
      async function loadIOSComponent() {
        if (Platform.OS === 'ios') {
          const { default: IOSComponent } = await import('./IOSComponent');
          // 这里正常使用组件即可
        }
      }
      
    3. 排查第三方依赖:有些老依赖可能也存在不规范的写法,先尝试把依赖更新到最新版本;如果更新不了,可以临时在metro.config.js里添加豁免配置(长远来看还是建议换成合规的依赖):
      module.exports = {
        resolver: {
          unstable_enablePackageExports: false,
        },
      };
      
  • 额外小提示:如果已经调整完import位置还是报错,检查下有没有文件存在语法错误,比如import语句后面跟了非法字符,或者文件编码异常导致Hermes解析失败。

备注:内容来源于stack exchange,提问作者mohammad hanafi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:23:19