指南针在 Symfony 2 资产过滤器例外

2022-08-30 12:59:00

我已经在我的symfony 2项目中安装了指南针。现在我想将资产过滤器与指南针结合使用。我正在使用Windows 7。

我认为它几乎可以正常工作,但我仍然收到此错误:

[Assetic\Exception\FilterException]
An error occurred while running:
"C:\Ruby21-x64\bin\ruby.EXE" "C:\Ruby21-x64\bin\compass.BAT" "compile" "C:\
Users\tommie\AppData\Local\Temp" "--boring" "--config" "C:\Users\tommie\App
Data\Local\Temp\ass4325.tmp" "--sass-dir" "" "--css-dir" "" "C:/Users/tommi
e/AppData/Local/Temp/ass4326.tmp.scss"
Error Output:
C:/Ruby21-x64/bin/compass.BAT:1: syntax error, unexpected tCONSTANT, expect
ing end-of-input

我的 html 代码 (twig) : stylesheets.html.twig

{% stylesheets filter="compass" output='css/compiled/*.css'
   "@AcmeSassDemoBundle/Resources/assets/css/base.scss"
%}
<link rel="stylesheet" href="{{ asset_url }}" />

{% endstylesheets %}

基.html.twig:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>{% block title %}Sass Demo!{% endblock %}</title>
    {#{% block stylesheets %}{% endblock %} #}

    {% include "AcmeSassDemoBundle:Demo:stylesheets.html.twig" %}
    <link rel="shortcut icon" href="{{ asset('favicon.ico') }}" />
</head>
<body>
    <div id="header">
        {% block header %}
            <h1>Sass Demo</h1>
            <div class="logo">this container is half as big as the sass.gif's dimension</div>
        {% endblock %}
    </div>

    <div id="menu">
        <ul>
            <li class="add"><a href="#">add something</a></li>
            <li class="edit"><a href="#">edit something</a></li>
            <li class="delete"><a href="#">delete something</a></li>
        </ul>
    </div>

    <div id="content">
        {% block body %}hello sass!{% endblock %}
    </div>

    <div id="footer">
        {% block footer %}awesome footer goes here ...{% endblock %}
    </div>
    {% block javascripts %}{% endblock %}</
</body>

索引.html.twig:

{% extends 'AcmeSassDemoBundle:Demo:base.html.twig' %}

{% block body %}

<div class="content">
  hello world
    <div class="sub">
       This text should be in green ...
       <div class="sub">
        ... and this one in blue!
    </div>
</div>

my config.yml filter assetic configuration:

# Assetic Configuration
assetic:
    debug: false
    use_controller: true# default: true
    filters:
        sass:    ~
        compass: 
            compass:
                bin: C:\Ruby21-x64\bin\compass.bat

base.scss

$main-background-color: #FFF;
$main-color: #FFF;
$light-color: #759E1A;
$link-color: #0088CC;

body {
    background-color: #CCC;
}

@mixin rounded($side, $radius: 10px) {
    border-radius: $radius;
    border-#{$side}-radius: $radius;
    -moz-border-radius-#{$side}: $radius;
    -webkit-border-#{$side}-radius: $radius;
}

@import "header.scss";
@import "menu.scss";
@import "content.scss";
@import "footer.scss";

答案 1

我不想阻止你,但是使用Windows和Ruby,这是有史以来最糟糕的组合,(node也node_module长树子目录,使Windows限制为256charaters,并且通过安装软件包将显示错误)。我的观点就像将项目移动到虚拟机的替代方案,类似于您的服务器配置。(VirtualBox和Vagrant)

Linux对Ruby更友好(它支持他),并且有符号链接和长路径名;

修补:https://symfony.com/doc/2.8/setup/homestead.html

也许也会帮助这个旧的链接:如何在Windows下的Symfony2中使用SCSS过滤器?


答案 2

这很可能是您已经尝试过/注意到的东西,但以防万一:

这个错误看起来更像是ruby解释器正在死亡,而不是在你的屁股/树枝上窒息。这在一定程度上是有道理的,因为ruby不希望使用.BAT脚本。

通常只使用“指南针”,而不是“指南针”。BAT',通常只是用“指南针”来称呼ruby。

“C:\Ruby21-x64\bin\ruby.EXE” “C:\Ruby21-x64\bin\compass.BAT” “compile” “C:\Users\tommie\AppData\Local\Temp“ ”--boring“ ”--config“ ”C:\Users\tommie\App Data\Local\Temp\ass4325.tmp“ ”--sass-dir“ ”“ ”--css-dir“ ”“ ”C:/Users/tommi e/AppData/Local/Temp/ass4326.tmp.scss”

通常是

“C:\Ruby21-x64\bin\ruby.EXE” “C:\Ruby21-x64\bin\compass” “compile” “C:\Users\tommie\AppData\Local\Temp“ ”--boring“ ”--config“ ”C:\Users\tommie\App Data\Local\Temp\ass4325.tmp“ ”--sass-dir“ ”“ ”--css-dir“ ”“ ”C:/Users/tommi e/AppData/Local/Temp/ass4326.tmp.scss”

从本质上讲,将指南针.bin路径设置为没有.bat,你可能会没事。这通常在assesdic.filters.compass.bin在你的config.yml中

另请参见 https://github.com/symfony/AsseticBundle/issues/158

这也表明特殊字符不太受欢迎,不确定它喜欢dirnames中的空格。如果没有.bat


推荐