Я создал файл vue.config.js, чтобы установить некоторые глобальные переменные sass (точно так же, как указывает документация), однако при попытке доступа к переменным в компоненте я получаю неопределенную ошибку. Добавление того же оператора импорта вручную в компонент работает, но почему-то его не извлекают из файла vue.config.js. Я проверил, что у меня установлены node-sass и sass-loader и что vue.config.js находится в корне проекта (рядом с package.json). Что мне не хватает?
module.exports = {
css: {
loaderOptions: {
sass: {
data: `
@import "@/assets/styles/_variables.scss";
`
}
}
}
}





Трудно устранить неполадки без полного контекста, поэтому вот несколько вариантов, которые вы можете попробовать:
Убедитесь, что вы перезапустили среду разработки после изменения конфигурации (перезапустите yarn dev или npm run dev)
Сохраняйте шаблонный литерал до одной строки, как это используется в документации. Это не должно иметь значения, но может. (например, data: `@import "@/assets/styles/_variables.scss";`)
Как вы, наверное, знаете, подчеркивание перед файлом sass обозначает партиал sass. Партиал не используется в примере, поэтому возможно, что это тоже имеет значение. (например, переименуйте _variables.scss в variables.scss и используйте data: `@import "@/assets/styles/variables.scss";`)
Убедитесь, что пакеты sass-loader, node-sass и css-loader обновлены.
Попробуйте использовать путь без косой черты после @. например @assets/styles/_variables.scss.
Попробуйте использовать ~ вместо @. например ~assets/styles/_variables.scss. Если ничего не помогло, попробуйте также заменить @ на src.
Удачи!
@Phendan Нет проблем! И я имею в виду последнюю версию или хотя бы минимальную версию, совместимую с документированным API. API глобальных переменных не всегда был доступен. Так что, если это не новый проект, обновление пакетов будет стоить вашего времени.
npm install --save-dev node-sass sass-loaderДобавьте код ниже. Помните - @ относится к папке / src
module.exports = {
css: {
loaderOptions: {
sass: {
data: '@import "@/assets/css/variables/_colors.scss";'
}
}
}
}
Перезапустить проект
Измените data на prependData
module.exports = {
css: {
loaderOptions: {
sass: {
prependData: `
@import "@/assets/styles/_variables.scss";
`
}
}
}
}
Подробнее об этом можно прочитать здесь: предварительная загрузка документов
этот код для vue3
установить:
npm install -D sass-loader@^10 sass
npm install -D fibers
npm i style-resources-loader -D
в вашем vue.config.js (проект корневого уровня)
module.exports = {
css: {
loaderOptions: {
sass: {
additionalData: `
@import "@/assets/styles/scss/_variables.scss";
`
}
}
}
}
символ @ означает, что ваш файл начинается с папки src
Спасибо за помощь! Уточнение: когда вы говорите «Убедитесь, что все обновлено», вы имеете в виду последнюю версию или просто ту, которая указана в package.json? Я пробовал все остальное, и это, к сожалению, не помогло.