【发布时间】:2018-06-14 11:08:26
【问题描述】:
我正在努力使用 dotLESS @import 来拥有一个单独的变量文件;我只是经常得到“变量未定义”。
如果我浏览到变量配置文件,它就可以工作;如果我将变量内联在主样式表中,它就可以工作;但在@import 中,没有骰子。我正在将 .css 和 .less 映射到扩展名,但是如果我只使用 .less 它也不起作用。
变量文件LESS-config.less是:
/*
.LESS VARIABLES
*/
@mbw_dark_cyan: #1293b5;
@mbw_cyan: #11add4;
@mbw_magenta: #e935da;
@control_text: #ffffff;
@action_delete: #ff5400;
@section_level1_bg: @mbw_dark_cyan;
@section_level1_fg: @control_text;
@button_bg: @mbw_dark_cyan;
@button_fg: @control_text;
@button_icon: @control_text;
@data_table_header: @mbw_cyan;
.dummy {
color: @control_text;
}
呈现为:
/*
.LESS VARIABLES
*/
.dummy {
color: #ffffff;
}
调用样式表main.css是:
@import (less) '/css/LESS-config';
button {
background: @button_bg;
}
这给出了错误:
variable @button_bg is undefined on line 4 in file '/css/main.css':
[3]: button {
[4]: background: @button_bg;
----------------^
[5]: }
正如我所说,如果我用复制和粘贴的相同变量替换导入,一切正常。
我已经尝试在另一个答案中不使用 BOM 进行保存,但这没有帮助。
编辑,我试过了:
- 删除(少)
- 改为双引号
- 使用相对路径
LESS-config,而不是上面的虚拟绝对路径 - 将
logger="dotless.Core.Loggers.AspResponseLogger" log="debug"添加到web.config(cache已经是false) - 添加
debug="1" - 添加
debug="true"
行为完全没有变化。
编辑2:
我创建了一个只包含 import 语句的精简 css;当我浏览它时,导入的样式就在那里。但是,在刷新时,我只得到一个空白响应。
所以这似乎与我的 IIS 配置/缓存有关?我已经关闭了内容压缩,但没有任何乐趣;禁用 .less 和 .css 的所有输出缓存,仍然没有乐趣!
FIXED 根据 Toni 的评论; https://stackoverflow.com/a/51754771/318411:
结果证明这是一个 dotLESS 问题,在 GitHub 上进行了跟踪:https://github.com/dotless/dotless/issues/553
完整的解决方法是:
- 将 dotLESS 升级到 1.6.7 版
- 由于
Method not found error,将Microsoft.Extensions.DependencyInjection降级到1.1.1.0 - 将导入的文件扩展名从
.css更改为.less
现在一切正常。
【问题讨论】:
-
您的
@import语句的语法是否正确?我不认识(less)粒子,而且我只见过它与双引号一起使用...从the Less.js site 给出的语法为@import "@{themes}/tidal-wave.less"; -
另外,您的路径是否正确?你确定
/css在你的文件系统的根目录中吗? -
我会检查报价,ta! “文件系统的根”是什么意思 -
/css是网站的虚拟根 - 对吗? -
更改了引号并丢失了
(less),仍然没有喜悦:( -
只是猜测:请注意您的主文件实际上是一个 CSS 文件 (
main.css),严格来说它不应该处理任何 Less 导入或变量。从技术上讲,您应该在@import (less)或至少在@button_bg得到错误(两者在CSS 文件中都是无效的)。换句话说,这可能只是您的设置中的一些怪癖(dotless必须不 处理*.css文件根本)。