gpt4 book ai didi

javascript - Asset.fromModule 不是函数。 (在 'Asset.fromModule(image)' 中, 'Asset.fromModule' 未定义)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:23:29 32 4
gpt4 key购买 nike

更新到 Expo sdk 34 后,出现此错误:TypeError:Asset.fromModule 不是函数。 (在“Asset.fromModule(image)”中,“Asset.fromModule”未定义)

更新到新版本时,我已经运行了 Expo 建议使用此命令的 cod-mod:npx expo-codemod sdk33-imports src,我还尝试更改 import * as Asset from 'expo-asset';import { Asset } from 'expo-asset',但这些更改都没有修复此警告。

这是我的 App.js

import React from 'react';
import { Dimensions, Alert } from 'react-native';
import {Root} from 'native-base';
import {createRootNavigator} from './router';
import {configureFontAwesomePro} from "react-native-fontawesome-pro";
import Geocoder from 'react-native-geocoding';
import { AppLoading } from 'expo';
import * as Asset from 'expo-asset';
import * as Font from 'expo-font';
import Api from './services/api';
import Moment from 'moment';
import Config from './config/config';
import './i18n';
import store from './store/store';
import i18n from 'i18n-js';

configureFontAwesomePro();
const RootNav = createRootNavigator();

function cacheImages(images) {

return images.map(image => {
if (typeof image === 'string') {
return Image.prefetch(image);
} else {
return Asset.fromModule(image).downloadAsync();
}
});
}

function cacheFonts(fonts) {
return fonts.map(font => Font.loadAsync(font));
}


export default class App extends React.Component {
constructor() {
super();
this.state = {
isReady: false
};

}

async _loadAssetsAsync() {
const imageAssets = cacheImages([
require('./assets/images/splash.png'),
require('./assets/images/splash-logo.png'),
require('./assets/images/hotdrink.png'),
require('./assets/images/insta.png'),
require('./assets/images/twitter.png'),
require('./assets/images/facebook.png'),
require('./assets/images/yelp.png'),
]);

store.updatePrefix(Expo.Linking.makeUrl('/'));

const fontAssets = cacheFonts(
[{
Roboto: require("native-base/Fonts/Roboto.ttf"),
Roboto_medium: require("native-base/Fonts/Roboto_medium.ttf"),
Ionicons: require("@expo/vector-icons")
}]
);

await Promise.all([...imageAssets, ...fontAssets]);
}

render() {
if (!this.state.isReady) {
return (<AppLoading
startAsync={this._loadAssetsAsync}
onFinish={() => this.setState({isReady: true})}
onError={(error) => console.log('app js: ', error)}
/>)
}
return (
<Root>
<RootNav uriPrefix={store.prefix} />
</Root>
)
}
}

Geocoder.init(Config.google_maps_key);

编辑:进行以下建议的更改后: - 将 Assets 导入从 import * as Asset from 'expo-asset'; 更改为 import { Asset } from 'expo-asset'; - 我现在收到此错误,与之前的略有不同 我最初写过 - TypeError:asset.downloadAsync 不是函数。 (在“asset.downloadAsync()”中,“asset.downloadAsync”未定义)

最佳答案

看起来这应该只是 import { Asset } from "expo-asset"; 而不是 import * as Asset from 'expo-asset';

我想通了,因为 import 语句看起来很奇怪,所以我将你的 App.js 复制到一个新的 create-react-native-app 安装中,添加了一些依赖项并注释掉了似乎无关的位或对未在此处发布的文件的引用。我得到了 TypeError: Asset.fromModule is not a function。 (在 'Asset.fromModule(image)' 中,'Asset.fromModule' 未定义) 警告,更改了导入行,并加载了应用程序(它没有做太多事情,但是有很多注释掉了预期)。

import 语句很容易意外出错,而不会在导入行上实际产生错误,可能值得回顾一下 as 在使用时的工作原理,请参阅the docs on MDN

关于javascript - Asset.fromModule 不是函数。 (在 'Asset.fromModule(image)' 中, 'Asset.fromModule' 未定义),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57422000/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com