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

Expo 46升级至47后出现new !(function语法错误的修复方法

解决Expo 47升级后出现的Uncaught SyntaxError: expected expression, got '!'错误

错误信息

Uncaught SyntaxError: expected expression, got '!'

问题代码

排查后发现错误来自这段webpack生成的异常代码:

var nativeEventEmitter = new !(function webpackMissingModule() { 
  var e = new Error("Cannot find module 'react-native-web/dist/exports/NativeEventEmitter'");
  e.code = 'MODULE_NOT_FOUND'; 
  throw e; 
}())();

原因分析

这段代码是webpack找不到指定模块时生成的占位代码,但new !(function...)()存在语法错误——new关键字后必须跟合法的构造函数或类,!运算符在这里直接破坏了语法结构。本质原因是Expo 47升级后,react-native-web模块的依赖路径或版本兼容性出现了不匹配。

解决步骤

  • 清理依赖并重新安装
    rm -rf node_modules package-lock.json yarn.lock
    npm install
    
  • 锁定兼容的react-native-web版本
    Expo 47对应的react-native-web稳定版本为~0.18.9,手动安装确保版本匹配:
    npm install react-native-web@~0.18.9 --save
    
  • 清除Expo缓存
    npx expo start --clear
    
  • 检查第三方库兼容性
    如果项目中使用了依赖react-native-web的第三方库,确认该库是否支持Expo 47,必要时更新第三方库到最新兼容版本。
  • 校验babel配置
    确保babel-preset-expo版本与Expo 47匹配(应为~9.2.0),更新后重新执行构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:40:24