React Native Expo浏览器运行正常 Android端报错提示App.css文件不存在
报错原因
React Native 原生端(Android、iOS)本身不支持直接导入 .css 格式的样式文件,只有 Expo Web 环境适配了Web标准的CSS导入逻辑,所以你在浏览器端运行正常,Android端就会抛出模块找不到的错误。
可落地的解决方案
- 优先推荐:移除CSS导入,改用React Native内置的
StyleSheetAPI编写样式
首先删除import './App.css'这行代码,把你写在App.css里的样式替换成React Native支持的StyleSheet语法即可,示例如下:
你注释掉的bootstrap.css导入同理,Bootstrap原生CSS只适配Web环境,原生端无法使用,如果需要跨端UI组件可以换用NativeBase、Tamagui等React Native专属的UI库。import React from 'react'; import { View, Text, StyleSheet } from 'react-native'; export default function App() { return ( <View style={styles.container}> <Text style={styles.title}>Hello World</Text> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, paddingTop: 50, backgroundColor: '#fff', }, title: { fontSize: 20, fontWeight: 'bold', textAlign: 'center', }, }); - 如果必须保留CSS文件,仅在Web端加载CSS
用平台判断逻辑,只在Web环境下引入CSS文件,避免原生端执行导入逻辑,修改代码如下:import { Platform } from 'react-native'; // 仅Web环境导入CSS if (Platform.OS === 'web') { require('./App.css'); // require('../node_modules/bootstrap/dist/css/bootstrap.css'); } - 如果需要多端复用CSS样式,使用CSS转RN样式的工具库
可以安装react-native-css-transformer之类的编译工具,在打包阶段把CSS文件转换成React Native能识别的StyleSheet对象,不要直接import .css文件。
内容的提问来源于stack exchange,提问作者GabeCunningham
相关产品推荐
相关产品推荐

