Css 变量名错误";是未定义的“;即使";变量.less“;进口的
我今天开始少用了。但这有点奇怪。此代码不起作用。我得到一个错误:Css 变量名错误";是未定义的“;即使";变量.less“;进口的,css,less,Css,Less,我今天开始少用了。但这有点奇怪。此代码不起作用。我得到一个错误: ! Variable Name Error: @linkColor in a is undefined. 我的引导程序: @import "variables.less"; @import "normalize.less"; 无变量: @linkColor: #08c; @linkColorHover: darken(@linkColor, 15%); 正常化。减少: a { c
! Variable Name Error: @linkColor in a is undefined.
我的引导程序:
@import "variables.less";
@import "normalize.less";
无变量:
@linkColor: #08c;
@linkColorHover: darken(@linkColor, 15%);
正常化。减少:
a {
color: @linkColor;
}
a:visited {
color: @linkColor;
}
a:hover {
color: @linkColorHover;
}
当我做出决定时
@导入“variables.less”
在normalize.less文件中,一切正常
感谢您的帮助:)我将使用normalize.less中的嵌套规则:
a {
color: @linkColor;
&:visited {color: @linkColor;}
&:hover {color: @linkColorHover;}
}
在@import中,您不需要使用“.less”,它是可选的:
@import "variables";
@import "normalize";
我不知道这是否有帮助…我在使用Winless编译器时遇到了同样的问题 我导入master.less的一些.less文件是空的。当我从导入的文件列表中删除这些文件时,我的变量被识别出来了 最终让我找到了正确的答案 如果使用BOM对文件进行编码,则LESS编译器似乎会自动失败。(对于那些不熟悉这个术语的人来说,这是一个默认设置。)这是一些编辑器中的默认设置,例如VisualStudio 如果BOM表中的错误在根文件中,编译器会在BOM表上显示错误,但对于@import-ed文件,编译器似乎会自动失败
尝试将文件保存为不带BOM表的UTF-8,看看这是否解决了您的问题。此错误也可能通过导入的文件中的错误导入而发生 在使用多层导入和Node.js中的“lessc”编译器时,我也遇到了这个问题:
- 原始文件导入了一个文件(我们称之为“子文件”)
- 子文件导入了一个文件(我们称之为“孙子”)
- 孙子是外来的
@import grandchild.less
而不是:
@import "grandchild.less";
修复导入孙子的子对象使原始对象可以看到子对象中定义的变量
这似乎是less-ie中的一个bug,坏的导入应该出现在“lessc”输出中,所以有一天它可能会被修复。在此之前,我希望这会有所帮助。为了帮助可能遇到这种情况的任何其他人不希望从多个导入生成重复的CSS,您有两种选择
@导入一次“filename.less”代码>以防止重复
“语句@import在1.4.0之前和之后的行为不同。它在所有旧版本中充当@import multiple,在所有1.4.0之后的less.js版本中充当@import one。”
发生这种情况的另一种奇怪的特殊情况是:如果使用.NET和dotless,编译器将阻塞带有变量说明符的嵌套媒体查询。如果您有这样的代码:
@media (min-width: @aVariable) {
.some-class{
margin: 10px;
@media (min-width: @anotherVariable) {
margin: 20px;
}
}
。。。然后dotless会告诉您,它找不到@anotherVariable的定义,即使上面使用了三行。对我来说,它是在使用@Import一次时发生的,没有任何帮助。 但是@Import起作用了
正如我在上一版本的Less中所读到的,导入将作为导入一次工作。如果您尝试导入文件两次(这不是一个好主意),并且第一次导入是在加载.Less文件中引用的变量之前,也会出现此错误 注意:我使用的是django压缩 在index.html中,我有:
{% compress css %}
<link href="{{ STATIC_URL }}less/timepicker.less" rel="stylesheet" type="text/less">
<link href="{{ STATIC_URL }}less/style.less" rel="stylesheet" type="text/less">
{% endcompress %}
我想这是因为你编译的是哪一个无主文件。同样地 如果您有Less/Project\u name/Project.Less和this Project.Less,则导入变量Less和目录中包含的所有其他文件
您只需将project.less编译到css中,而不是编译所有less文件。如果您试图一次编译project.less和variables.less,则会出现此错误。而且您可以避免重复声明导入变量较少的文件可能还有另一个可能的根本原因 这是我的原始Gruntfile.js:
less: {
compile: {
files: {
'css/less.css': 'less/**/*.less'
}
}
},
通配符使LESS编译器编译该文件夹下的所有.LESS文件,并将所有结果合并到一个CSS中。运行grunt-less:compile
时出错:
NameError:。在第38行第3列的less/core/html.less中未定义转换
一旦我将
'less/***/.less'
更改为'less/css.less'
,编译就成功了 根据文档,它是@import“filename”;。您的解决方案无效。如何编译为.css?使用less.js或软件编译器?我很好奇这是否有什么不同。。把你的文件放在某个地方,这样我们就可以检查(如果可能的话)-我从来没有遇到过这样的文件结构问题。很抱歉,我以前没有看到这个评论。我想这可能是因为在我的Linux上错误地设置了文件权限的问题:无论如何,现在一切似乎都很好@conradk我在操作系统X上使用Less.app时遇到了同样的问题。更改权限有什么帮助?如果我记得足够清楚,我必须限制“/home/myAccount”文件夹上设置的权限,该文件夹也包含我的webroot。知道TextMate是否犯有BOM罪吗?对不起,我不是TextMate用户。我误读了这个。我在Windows上使用升华文本2。我选择了File>Save With Encoding>UTF-8 With BOM
,然后我的grunt watch
重新编译了它,问题马上就解决了。无论如何,谢谢你的提示!这是一个极其重要的区别。谢谢你指出这一点!我建议不要在模板中使用STATIC\u URL
-“如果您尝试导入文件两次,也会出现此错误”-是的,谢谢您发布此消息。这是解决我问题的关键。
less: {
compile: {
files: {
'css/less.css': 'less/**/*.less'
}
}
},