Sass map.get() не работает. map-get() делает. Что дает?

Проблема: map.get() не работает. map-get() работает.

Я настроил карту значений цвета и создал простую функцию для их извлечения.

При поиске я следовал документации Sass, в которой говорится, что вы можете получить значение карты используя функцию map.get(). Использование этого или любого другого map.function приводит к ошибке Error: There is no module with the namespace "map"..

Проверяя модуль карты, я заметил альтернативный синтаксис, map-get(), который работает.

Что дает? Я что-то упустил, например, импорт модуля карты, чтобы я мог использовать его в таком виде?

Посмотрите мой код ниже:

// Using npm dart `sass 1.26.11`.

$colors: ('primary': black, 'secondary': white);

// Doesn't work    
@function color($color) {
  @return map.get($colors, $color);
}

// Does work
@function color($color) {
  @return map-get($colors, $color);
}

Вопрос: что мне нужно изменить, чтобы синтаксис map.get() заработал?


person LICHEN    schedule 05.10.2020    source источник


Ответы (1)


У меня такая же проблема, как и у OP (с использованием dart-sass v1.25.0), и работает только map-get, а map.get нет.

Документация не очень ясна по этому поводу, но (Sass Module System: Draft 6) документ на Github объясняет это лучше.

Похоже, что Sass переходит к использованию @use в пользу @import для лучшей совместимости с собственный CSS, и чтобы получить доступ к map.get, теперь вы должны явно импортировать map module, используя ключевое слово @use.

Итак, используя пример OP, map.get должен работать:

@use "sass:map";

$colors: ('primary': black, 'secondary': white);

@function color($color) {
  @return map.get($colors, $color);
}
person robertp    schedule 16.10.2020