LESS 编译出现错误:预期 “,” 而得到了 “}”

阅读时长 4 分钟读完

在前端开发中,我们经常会使用 LESS 这种 CSS 预处理器来提升开发效率。但是,在使用 LESS 编译过程中,我们有时会遇到错误,其中一种常见的错误就是 LESS 编译出现了“预期 ‘,’ 而得到了 ‘}’”的错误。

问题描述

当我们在 LESS 文件中书写代码时,如果不小心将逗号(,)写成了右大括号(}),那么在编译的过程中就会出现“预期 ‘,’ 而得到了 ‘}’”的错误,如下所示:

-- -------------------- ---- -------
-- ---------
------- -----
---- -
  ----------------- -------
  ------- --- ----- -----
  -------- -----
  ------- --
  ---------- -----
  ------------ ---------- ------- -----------
  ---- -
    ------ -----
    ------- ------
    ----------------- -----
    -------------- ----
    ----------- - - ---- ------- -- -- ----
  - -- ---------
  ------ -
    ---------- -----
    ------------ -----
    ------ -----
    ----------- -------
    -------------- -----
  -
-

在编译的过程中,LESS 会提示如下错误:

这个错误提示比较简洁,只是告诉我们在第 15 行第 3 列出现了错误,但是并没有告诉我们具体是什么错误。如果我们不仔细查看 LESS 文件,很容易就会忽略掉这个问题。

问题分析

在 LESS 中,逗号(,)的作用是分隔多个属性值,例如:

在这个例子中,我们使用逗号将两个 box-shadow 属性值分隔开来,这是 LESS 中常见的写法。

而右大括号(})的作用是结束一个选择器块,例如:

在这个例子中,我们使用右大括号结束了 .box 选择器块。

如果我们在 LESS 文件中将逗号写成了右大括号,那么编译器就会认为我们想要结束一个选择器块,但是此时并没有开始选择器块,因此就会出现“预期 ‘,’ 而得到了 ‘}’”的错误。

解决方法

解决这个问题的方法很简单,只需要在 LESS 文件中找到出错的那行代码,将右大括号(})改成逗号(,)即可,如下所示:

-- -------------------- ---- -------
-- ---------
------- -----
---- -
  ----------------- -------
  ------- --- ----- -----
  -------- -----
  ------- --
  ---------- -----
  ------------ ---------- ------- -----------
  ---- -
    ------ -----
    ------- ------
    ----------------- -----
    -------------- ----
    ----------- - - ---- ------- -- -- ----
                - - ---- ------- -- -- ---- -- -------
  -
  ------ -
    ---------- -----
    ------------ -----
    ------ -----
    ----------- -------
    -------------- -----
  -
-

修改后的代码就可以正常编译了。

总结

LESS 编译出现“预期 ‘,’ 而得到了 ‘}’”的错误,是因为我们不小心将逗号写成了右大括号,从而导致编译器无法识别代码。解决这个问题的方法很简单,只需要将右大括号改成逗号即可。

在编写 LESS 代码时,建议大家先写好代码,再仔细检查一遍,确保没有语法错误。如果遇到问题,可以先查看编译错误的具体信息,再进行分析和解决。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6615f494d10417a2225d56d3

纠错
反馈