asset.downloadAsync is not a function - SDK 35

Please provide the following:

  1. SDK Version: 35
  2. Platforms(Android/iOS/web/all): iOS & Android

I just upgraded from SDK 34 to 35 and I am getting the following error:

[Unhandled promise rejection: TypeError: asset.downloadAsync is not a function. (In 'asset.downloadAsync()', 'asset.downloadAsync' is undefined)]
- node_modules\expo-font\build\Font.js:99:10 in _loadSingleFontAsync$

This is being called in my App.js:

import * as Font from 'expo-font'
import { Asset } from 'expo-asset'

 async _loadResourcesAsync() {
        await AsyncStorage.getAllKeys().then(keys => {

        try {
            await Promise.all([
                    'Roboto': require('native-base/Fonts/Roboto.ttf'),
                    'Roboto_medium': require('native-base/Fonts/Roboto_medium.ttf'),
                    'font awesome': require('@expo/vector-icons/FontAwesome'),

        } catch (e) {

        this.setState({appIsReady: true})

Has anyone run into this issue? I have tried deleting my node_modules and clearing my cache, deleting package-lock.json.

It seemed like this issue was opened before but not really solved: asset.downloadAsync is not a function

Looks like the code is trying to call downloadAsync on the result of require('native-base/Fonts/Roboto.ttf')

As a test, does the following work?

          Roboto: '',                                                                                                            

Tried that, it didn’t work. But it gave me the idea of changing the Font Awesome one to:

'font awesome': require('native-base/Fonts/FontAwesome.ttf'),

Which got rid of the error.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.