升级CSS相关Loader后import * as语法失效问题求助
CSS导入语法失效的原因解析
你遇到的问题核心是css-loader大版本升级带来的导出格式变更:
- 旧版css-loader(3.5.3)处理CSS文件时,会将类名等内容以命名导出的形式输出,因此
import * as css可以捕获所有导出的属性,正常获取类名。 - 新版css-loader(6.x及以上)默认改为默认导出单个对象,所有类名都挂载在这个默认导出的对象上。此时
import * as css试图收集命名导出,但实际上没有任何命名导出,自然无法拿到有效内容;而import css from './some-file.css'直接导入这个默认对象,就能正常获取所有类名。
同时,升级后的mini-css-extract-plugin(2.8.0)与新版css-loader做了适配,遵循了新的导出规则,这也强化了这个语法变化的影响。
如果坚持要使用import * as css的写法,可以在css-loader的配置中添加exportType: 'named'选项,强制恢复旧的命名导出模式,但官方更推荐使用默认导入的写法,这更符合ES模块的通用规范。
内容的提问来源于stack exchange,提问作者rahulkrishnan
相关产品推荐
相关产品推荐

