\$${k.replace('_', '-')}: ${scssVariables[k]};
).join('\n')配置无效,scss文件里的scss变量需要使用js变量动态生成//js文件内:
export default
{
'color-bg-normal': '#AEAFB3'
val:
{
'color-bg-normal': '#AEAFB3'
}
}
//scss文件
:root{
--color-bg:$color-bg-normal;//不报错,也不显示颜色
}
@mixin color-bg {
background-color:$color-bg-normal//报错
}
Error: Undefined variable.
╷
31 │ background-color:$color-bg-normal
│ ^^^^^^^^^^^^^^^^
const scssVariables = require('./src/assets/styleJS/darkBlack.js');
export default defineConfig({
//...
css: {
preprocessorOptions: {
//...
prependData: Object.keys(scssVariables)
.map(k => `\$${k.replace('_', '-')}: ${scssVariables[k]};`)
.join('\n')
}
}
}
})
具体原因可能是vite.config.js中的preprocessorOptions配置错误导致的。
可以尝试检查以下几点:
检查js文件中的变量名称是否正确,是否与scss文件中引用的变量名称一致。
检查vite.config.js中preprocessorOptions配置是否正确,特别是prependData和map()函数中的变量名称是否正确。
检查scss文件中是否有其他错误导致无法正常使用js文件中的变量。
检查项目中是否有其他配置或插件影响到了scss文件的正常使用。
你配置的结构和官方文档的不一样啊
css: {
preprocessorOptions: {
scss: {
additionalData: Object.keys(scssVariables)
.map(k => `\$${k.replace('_', '-')}: ${scssVariables[k]};`)
.join('\n')
}
}
}
在 vite.config.js 中配置 prependData 时,如果使用 Object.keys().map().join('\n') 的方式无效,可能是因为以下几种原因:
Object.keys() 方法没有正确地获取对象的键值:确保 Object.keys() 方法传入的参数是一个对象,并且该对象有可枚举的键值。
map() 方法没有正确地处理对象的键值:确保 map() 方法传入的回调函数能够正确地处理对象的键值,并返回有效的字符串。
join() 方法没有正确地拼接字符串:确保 join() 方法传入的参数是一个字符串,并且该字符串能够正确地拼接 map() 方法返回的字符串。
vite.config.js 中的 prependData 参数配置不正确:确保 prependData 参数的值是一个字符串,并且是符合要求的字符串。
检查Object.keys().map().join('\n') 在vite.config.js中是否在函数里面,且在export default里面
需要检查上述错误,并确保代码能够正确地执行,才能解决 prependData 配置无效的问题。