【问题标题】:dotless fails on any variables or mixins(functions). variable @background-dark is undefineddotless 在任何变量或 mixins(函数)上都失败。变量@background-dark 未定义
【发布时间】:2013-08-31 07:43:57
【问题描述】:

如果我以 dotless 或 mixins 的形式调用任何变量,则生成的 CSS 文件为空。

我的设置如下:

  1. 我有一个导入文件,它可以导入我所有其他基于 dotless 的 css 文件
  2. 第一个导入是变量
  3. 第二个导入是mixins(方法)
  4. 后面是我需要的任何其他文件

所以文件00.1.import.less会有如下内容:

@import "00.2.variables";
@import "00.3.methods";
@import "00.4.init";
@import "01.1.html";

当我将生成的链接复制到新选项卡时,它会显示:

variable @background-dark is undefined on line 24 in file '/Content/00.1.import.less':

 [23]: @import "11.1.p";
 [24]: @import "13.1.a";
       ---------------^
 [25]: @import "13.2.a-login";

奇怪的是,那一行就是一个导入行。该文件根本不使用任何变量或混合。下一个文件也没有。目前我正在测试一个变量/混合一个文件。

如果我按 F5,我得到的下一个异常是:

Value does not fall within the expected range.

Stack Trace:    

[ArgumentException: Value does not fall within the expected range.]
   System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) +0
   System.Web.Hosting.IIS7WorkerRequest.SetKnownResponseHeader(Int32 index, String value, Boolean replace) +150
   System.Web.HttpHeaderCollection.SetHeader(String name, String value, Boolean replace) +219
   System.Web.HttpHeaderCollection.Add(String name, String value) +23
   System.Web.HttpResponse.AppendHeader(String name, String value) +189
   System.Web.HttpResponseWrapper.AppendHeader(String name, String value) +16
   dotless.Core.Response.CssResponse.HandleCompression() +646
   dotless.Core.Response.CssResponse.WriteCss(String css) +79
   dotless.Core.Loggers.AspResponseLogger.Log(String message) +50
   dotless.Core.Loggers.Logger.Log(LogLevel level, String message) +80
   dotless.Core.Loggers.Logger.Error(String message) +43
   dotless.Core.LessEngine.TransformToCss(String source, String fileName) +562
   dotless.Core.ParameterDecorator.TransformToCss(String source, String fileName) +420
   dotless.Core.HandlerImpl.Execute() +152
   dotless.Core.LessCssHttpHandler.ProcessRequest(HttpContext context) +123
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +100
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

示例变量问题: 声明

@background-dark: #404040;

用法

div#top
{
    height:125px;
    border-top: 2px solid #158fa6;
    background:@background-dark;
}

无论我做什么,这都会失败。

有人知道我哪里出错了吗?

【问题讨论】:

    标签: dotless


    【解决方案1】:

    似乎有 2 个问题。首先应该向 http://github.com/dotless/dotless 报告,而不是堆栈溢出,但无论如何我会继续。

    缓存问题似乎是一个异常设置标头 - 我以前从未见过,它需要调查以找出问题所在。

    变量问题可能是由于我们在 1.3.0.5 之前的一个错误,它没有正确报告导入文件中的错误。如果您不是 1.3.05,请升级并重试。

    【讨论】:

    • 嗨,卢克,问题 1:不是问题。我认为我做错了什么,而不是错误,所以在 Stack 上问这个问题似乎很合适。问题2:我从 1.3.0.3 更新到 1.3.0.5 解决了变量问题。但是,混合问题仍然存在。但是,当我将一个 mixin 单独添加到一个类中时,它可以工作。一旦我添加了一个 mixin 和其他样式,它就会失败。
    • 我想为了帮助你,我需要更多关于现在失败的确切原因以及如何失败的细节......
    • 混合失败。因此,如果我有一个名为 .radius(@tst){} 的 mixin,然后按如下方式使用它 .use { .radius(10);它有效,但如果我执行以下操作: .use { color:red; .半径(10); } 它失败。一旦我向 css 类添加其他属性,它就会失败。
    • 好的,但这不会自行发生,所以一定有其他事情发生。您应该尝试创建尽可能小的测试用例并在 github 上创建问题。
    • 嗨,卢克,我已经在 GitHub 问题 #230 中记录了这个
    【解决方案2】:

    雅克,

    首先,这与其说是一个解释,不如说是一个答案。

    您似乎遇到了与我相同的编译、捆绑、缩小订单问题。

    Dotless - Can't reference less variable in separate file with MVC Bundling

    我遇到并且正在尝试解决的问题是,我在单独的文件中引用变量和 mixin(在被引用之前包含在内),但找不到它们。由于文件编译是单独处理的,因此正在编译的文件不知道以前编译的文件。在这种情况下,dotless 不会返回要捆绑的内容。

    我已经对 process 方法进行了一些不同的修改,以手动捆绑然后缩小,但 dotless 似乎没有一种功能方法可以在没有物理文件名的情况下编译 less。

    如果我不在基地,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2023-03-08
      • 2013-09-27
      相关资源
      最近更新 更多