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

Expo通知调用getExpoPushTokenAsync()后应用崩溃求助

解决Expo 47 + Notifications 0.17.0获取推送令牌后崩溃的问题

针对你遇到的调用Notifications.getExpoPushTokenAsync()获取令牌后应用崩溃、报错涉及@ide/backoff和util.types.isPromise的问题,以下是经过验证的解决方向:

1. 强制指定兼容的@ide/backoff版本

报错核心是@ide/backoff的computeNextBackoffInterval方法未找到,这是因为Expo 47与expo-notifications@0.17.0对@ide/backoff的版本依赖存在冲突。你需要手动锁定兼容版本:

  • 在package.json中添加或修改依赖:
    "dependencies": {
      "@ide/backoff": "2.2.1"
    }
    
  • 执行以下命令重新安装依赖:
    rm -rf node_modules package-lock.json
    npm install
    

2. 清除Expo缓存并重建项目

Metro缓存或旧的构建文件可能导致模块加载异常,执行以下操作彻底清理:

expo r -c

该命令会清除Expo的缓存并重启开发服务器,确保所有依赖模块被正确解析。

3. 移除手动传入的devicePushToken

在Expo Go环境下,Notifications.getExpoPushTokenAsync()会自动处理设备令牌的获取与注册,手动传入devicePushToken可能触发内部逻辑冲突。简化代码为:

const expoPushTokenResponse = await Notifications.getExpoPushTokenAsync();
console.log('Expo Push Token:', expoPushTokenResponse.data);

4. 检查Babel配置是否为Expo默认设置

错误中的_$$_REQUIRE是Metro打包的模块引用标识,若Babel配置被修改,可能导致模块解析错误。确保babel.config.js保持默认:

module.exports = function(api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
  };
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:15:37