未处理的承诺拒绝:未定义不是对象(评估 _expoLocation.requestForegroundPermissionsAsync)

Posted

技术标签:

【中文标题】未处理的承诺拒绝:未定义不是对象(评估 _expoLocation.requestForegroundPermissionsAsync)【英文标题】:Unhandled promise rejection: undefined is not an object (evaluating _expoLocation.requestForegroundPermissionsAsync) 【发布时间】:2021-05-10 01:35:48 【问题描述】:

我正在尝试通过 official example for expo-location 在 React Native with Expo(android 托管工作流)中获取用户位置。这是我的功能:

import Location from 'expo-location';

const handleLocationFinder = async () => 
  const  status  = await Location.requestForegroundPermissionsAsync();
  if (status !== 'granted') 
    console.log('Permission denied. Enter the location manually.');
    return;
  
  const location = await Location.getCurrentPositionAsync();
  console.log(location);
;

但是,当我调用这个函数时,我得到了这个警告:

[Unhandled promise rejection: TypeError: undefined is not an object (evaluating '_expoLocation.default.requestForegroundPermissionsAsync')]

我尝试了什么

在模拟器中重新安装应用; 全新模拟器; 我的实际手机(Android 8.0); 将"permissions": ["ACCESS_FINE_LOCATION"] 添加到app.json(尽管世博会似乎这样做); expo upgrade; 祈祷。

平台信息(在expo upgrade之后):

Android 11.0(模拟 Pixel 4) expo: 41.0.1 react-native: sdk-41.0.0 expo-location: 12.0.4

【问题讨论】:

当我使用现在已弃用的 requestPermissionsAsync();相反,它可以工作,除了警告...... @PhilCowan,我实际上放弃了与 expo 的斗争并退出了一个简单的工作流程。之后,使用react-native-permissions 效果很好。 【参考方案1】:

我遇到了同样的问题,当我改变时:

import Location from "expo-location";

收件人:

import * as Location from "expo-location";

就像文档中的内容一样,它对我有用。

【讨论】:

以上是关于未处理的承诺拒绝:未定义不是对象(评估 _expoLocation.requestForegroundPermissionsAsync)的主要内容,如果未能解决你的问题,请参考以下文章

反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map

redux 操作功能无法正确执行 - expo“可能未处理的承诺拒绝”

未处理的承诺拒绝:TypeError:网络请求在expo react native 中失败

反应本机中未处理的承诺拒绝错误?

react-native 错误:[未处理的承诺拒绝:错误:获取 Expo 令牌时遇到错误:TypeError:网络请求失败。]

EXPO:未捕获的错误:未定义不是对象(评估's.STANDARD_EVENT_ADD_TO_CART')