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

Expo项目中使用react-native-sass-transformer导入样式对象为空求助

解决Expo Go中react-native-sass-transformer导入SCSS样式为空的问题

1. 修正Metro配置(适配Expo版本)

Metro默认可能将SCSS视为资源文件而非源文件,需调整配置确保转换器正确识别:

const { getDefaultConfig } = require('expo/metro-config');

const config = getDefaultConfig(__dirname);

// 将SCSS/SASS加入源扩展名列表
config.resolver.sourceExts = [...config.resolver.sourceExts, 'scss', 'sass'];
// 从资源扩展名中移除SCSS/SASS,避免被当作静态资源处理
config.resolver.assetExts = config.resolver.assetExts.filter(ext => !['scss', 'sass'].includes(ext));

// 指定SASS转换器路径
config.transformer.babelTransformerPath = require.resolve('react-native-sass-transformer');

module.exports = config;

2. 彻底清除缓存

缓存会导致配置不生效,执行以下命令重启项目:

npx expo start --clear

同时可卸载并重装Expo Go应用,确保客户端缓存也被清除。

3. 调整Sass版本兼容性

react-native-sass-transformer对高版本Sass可能存在兼容问题,安装指定兼容版本:

npm uninstall sass
npm install --save-dev sass@1.54.0

4. 简化app.json配置

新版本Expo中,packagerOpts无需重复指定sourceExts,保留配置引用即可:

{
  "expo": {
    ...
    "packagerOpts": {
      "config": "metro.config.js"
    },
    ...
  }
}

5. 验证SCSS文件与导入路径

  • 检查SCSS文件是否存在语法错误(比如括号不匹配、属性拼写错误),语法错误会导致转换器返回空对象;
  • 确认导入路径正确,确保./SignInScreen.scss与当前JS文件在同一目录下。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:53:11