Visual Studio抑制未定义的SASS变量上的错误

时间:2018-11-27 02:53:42

标签: visual-studio sass visual-studio-2017 scss-mixins

我试图抑制与Visual Studio中的SASS文件有关的特定错误。我会提到一切正常,CSS文件的生成与SASS文件应生成的完全一样,即使VS出现此错误,所以我认为这可能是VS的错误。

基本上我正在做的是,我有2个SASS文件,我在其中声明了一些变量,作为另一个SASS文件的设置,该文件包含一些根据上下文提供的设置文件起作用的mixin。

例如,这些是设置的2个文件:

_settings-ltr.scss

$bi-app-left: left;
$bi-app-right: right;

_settings-rtl.scss

$bi-app-left: right;
$bi-app-right: left;

这是使用这些设置的文件:

_mixins.scss

@mixin padding-left($distance) {
  padding-#{$bi-app-left}: $distance;
}

@mixin padding-right($distance) {
  padding-#{$bi-app-right}: $distance;
}

现在,基本上该错误表明未定义变量“ $ bi-app-left”(以及未定义“ $ bi-app-right”),并且我实际上并未在“ _mixins”中定义这些变量。 scss”文件,我将其传递到其他SASS文件中的上下文中,如下所示:

site.scss

@import '_settings-ltr.scss';
@import '_mixins.scss';

效果很好,除了VS中的错误:

The error in Visual Studio

我的问题

如何专门禁用此错误,而不禁用其他SASS文件错误?

2 个答案:

答案 0 :(得分:1)

这是因为VS SCSS编辑器如何解析变量。从正在编辑文件的角度来看,它是这样做的。因为_mixins.scss的SCSS编辑器实例不知道如何在site.scss中解析导入,所以它没有解决此引用的方法。如果_mixins.scss拥有一个{import _settings-ltr.scss(或-rtl)之前的@import链,那么它将能够解析该变量,并且不会显示错误。

也提出了类似的反馈here。最好打开一个新的反馈项来更好地描述场景(以及用于编译SCSS的内容,例如,如果您正在使用WebPack),以便团队可以将其作为设计变更的优先级。它不会立即得到解决,但是我们确实考虑了反馈项的数量,以对待办事项进行优先级排序。 (而且我很想拥有更多的弹药来优先使用此功能...)

当前,VS中没有一种方法可以禁用特定的SCSS错误。这可能是另一个功能请求,但是实现起来的优先级较低。

答案 1 :(得分:0)

我通过引用使用/// <reference path="./../mainfile" />导入所有其他文件的主文件(在我的示例中将其命名为mainfile)激活了在其他地方声明的文件的智能感知。

代码应根据主文件的嵌套而更改(用您自己的导入其他文件的起始文件的名称替换)。 还要添加的scss文件之间的差异。例如,对于两个./..,两个../..深的文件夹,依此类推。

另一个例子。我通常将我的起始文件命名为main,所有的scss文件都是两个-三个文件夹深。

../../main
./../main

可悲的是,我没有找到一种基于未知文件成员的动态引用路径的方法。另外,该行还必须添加到每个文件中。

上面的解决方案提供了智能感知功能,可以对错误进行排序,您还可以看到悬停值,定义值等。