Webpack内联加载器语法:如何传递布尔类型选项?
问题解析与解决方案
你的推测完全正确:webpack对inline loader的URL风格参数不会做类型转换,所有通过key=value形式传递的参数都会被解析为字符串类型。
比如你写的esModule=true,实际传递给style-loader的是字符串"true",而不是布尔值true,这就触发了style-loader的schema校验错误——它要求esModule必须是布尔类型,哪怕你传1或"yes",最终都是字符串,自然不满足要求。
解决办法
- 继续使用对象语法传递参数(即你已验证可行的写法):
import styles from '!style-loader?{"esModule":true}!css-loader!./style.css'; - 或者在webpack配置文件中全局配置style-loader的
esModule选项,避免在inline中重复编写参数:module.exports = { module: { rules: [ { test: /\.css$/, use: [ { loader: 'style-loader', options: { esModule: true } }, 'css-loader' ] } ] } };
内容的提问来源于stack exchange,提问作者gremo
相关产品推荐
相关产品推荐

