SASS 没有在 symfony 中编译

Posted

技术标签:

【中文标题】SASS 没有在 symfony 中编译【英文标题】:SASS not compiling in symfony 【发布时间】:2017-11-10 20:37:25 【问题描述】:

我正在尝试将 SASS 与带有 symfony 的 Assetic 捆绑包一起使用。我遵循了主要教程here。但是,它不会生成任何 css 文件。我尝试过使用不同的输出,检查文件权限并弄乱过滤器,但我不太确定从这里去哪里。

相关的config.yml代码:

# Assetic Configuration    
assetic:
    debug:          '%kernel.debug%'
    use_controller: '%kernel.debug%'
    filters:
        cs-s-rewrite: ~
        scssphp: 
          bin: /usr/local/lib/ruby/gems/2.3.0/gems/sass-3.4.24
          apply_to: .scss$

这是我的 stylesheet.html.twig,包含在我的 base.html.twig 中

% stylesheets 
    'sass/style.scss' 
    filter = "scssphp" output='css/sass.css' %
    <link rel="stylesheet" href=" asset_url "/>
% endstylesheets %

我尝试使用以下命令行:

php bin/console assetic:dump --env=prod --no-debug

并得到以下错误:

[Assetic\Exception\FilterException]                                          
  An error occurred while running:                                             
  '/usr/local/lib/ruby' '/usr/local/lib/ruby/gems/2.3.0/gems/sass-3.4.24' '--  
  load-path' '/Applications/XAMPP/xamppfiles/htdocs/my_website/app/../web/sas  
  s' '--scss' '--load-path' '/Applications/XAMPP/xamppfiles/htdocs/my_website  
  /app/../web' '--cache-location' '/Applications/XAMPP/xamppfiles/htdocs/my_w  
  ebsite/var/cache/prod' '/private/var/folders/_2/xkw80vl13zj0xw0nm7j8c4bc000  
  0gn/T/assetic_sassqn8iBF'                                                    
  Error Output:                                                                
  sh: /usr/local/lib/ruby: is a directory                                      
  sh: line 0: exec: /usr/local/lib/ruby: cannot execute: Undefined error: 0    
  Input:
  [...]

错误的其余部分只是我的 scss 文件。我不太确定错误告诉我什么。

谢谢:)

【问题讨论】:

【参考方案1】:

我认为您需要找到ruby 的正确路径(该错误意味着/usr/local/lib/ruby 不是您的ruby 解释器,而只是一个文件夹)和sass

    执行which ruby。它将打印到 ruby​​ 的路径。对我来说是/usr/bin/ruby。 在您的配置中设置正确的路径:
资产: 调试:'%kernel.debug%' use_controller: '%kernel.debug%' 红宝石:/usr/bin/ruby 过滤器: css重写:~ scssphp: 垃圾箱:/usr/local/lib/ruby/gems/2.3.0/gems/sass-3.4.24 适用于:.scss$

    如果还是不行,可能你还需要找到sass的正确路径。我正在这个文件夹中寻找它:

    找到 /usr/local/bin/ | grep 萨斯 查找 /usr/bin/ | grep 萨斯 查找 /usr/lib/ | grep 萨斯

第一个命令给了我这个输出:

/usr/local/bin/sass-convert
/usr/local/bin/node-sass
/usr/local/bin/sass

最后一行显示路径。尝试在您的配置中更改它,如下所示:

assetic:
    debug:          '%kernel.debug%'
    use_controller: '%kernel.debug%'
    ruby: /usr/bin/ruby
    filters:
        cs-s-rewrite: ~
        scssphp: 
          bin: /usr/local/bin/sass
          apply_to: .scss$

让我知道它是否有效。

【讨论】:

感谢您的回复!使用“which ruby​​”,它仍然将我链接到同一个库( /usr/local/lib/ruby )。但是,我使用了您的路径 /usr/bin/ruby,因为那是我找到可执行文件的地方。我寻找 sass 并在与您相同的路径上找到它。尽管如此,我仍然得到同样的错误?它仍然说“ sh: /usr/local/lib/ruby: is a directory ”,即使我没有在配置文件中的任何地方使用该路径。是否涉及缓存? 也许,尝试清除缓存并将--env dev 选项放入命令

以上是关于SASS 没有在 symfony 中编译的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Symfony 中增加会话超时

如何托管多个 symfony 项目?

如何在 LoginListener 中的 onSecurityInteractiveLogin 方法中重定向 - Symfony2

symfony webpack-encore 无法在 win7x64 中编译

单个样式表必须在 sass 目录中

如何让 Assetic + sass 在 Windows 中与 Symfony2 一起工作?