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

Expo 47版本使用native-notify报TypeError:(...)不是函数

问题原因及解决方案

核心问题

报错TypeError: (0, _nativeNotify.default) is not a function的本质是:你导入的native-notify默认导出不再是可调用的函数,而是一个对象,直接调用时自然触发类型错误。

为什么Expo 47会出现这个问题

主要和Expo 47的底层升级及模块解析规则变化有关:

  • Expo 47 将React Native版本升级到0.70.x,该版本对ES模块与CommonJS模块的互操作性处理更严格。
  • 旧版Expo(如46)的Metro打包器会对CommonJS模块做宽松的兼容映射,可能把native-notify的命名导出自动映射为默认导出的函数;而Expo 47的Metro不再做这种兼容,导致原本的默认导入拿到的是整个模块的导出对象,而非目标函数。
  • 另一种可能是native-notify未及时适配React Native 0.70+,其导出结构在新环境下被解析异常。

解决方法

  1. 升级native-notify到最新版本
    先检查包的更新日志,确认是否有适配Expo 47/RN 0.70的版本,执行命令:

    npm update native-notify
    # 或 yarn upgrade native-notify
    
  2. 修改导入与调用方式
    如果升级后问题仍存在,说明包的导出结构是命名导出而非默认导出,调整代码:

    • 原错误代码:
      import NativeNotify from 'native-notify';
      NativeNotify(5168, 'CDQ7qgg9m0awOxaMtMlK6r');
      
    • 修改后(以包实际的初始化函数名为准):
      import { initialize } from 'native-notify';
      initialize(5168, 'CDQ7qgg9m0awOxaMtMlK6r');
      

    若包的默认导出是包含函数的对象,也可这样调用:

    import NativeNotify from 'native-notify';
    NativeNotify.initialize(5168, 'CDQ7qgg9m0awOxaMtMlK6r');
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 23:01:37