【问题标题】:Symfony 2.3 does not work well with "less" embedded in projectSymfony 2.3 不适用于项目中嵌入的“less”
【发布时间】:2014-02-14 14:01:07
【问题描述】:

我将我所有的 node.js 依赖项嵌入到项目中并且所有的工作,除了“less”。关于如何解决这个问题的任何想法?

这是我的配置:

assetic:
debug:          %kernel.debug%
use_controller: false
node: "%assetic_node%"
node_paths:
    - "%kernel.root_dir%/Resources/node_modules/"
    - "%kernel.root_dir%/Resources/node_modules/less/node_modules/"
    - "/usr/lib/node_modules/"
    - "/usr/local/lib/node_modules/"
    - "/opt/local/lib/node_modules/"
    - "/root/node_modules/"
filters:
    cssmin: ~
    cssrewrite: ~
    less:
        apply_to: "\.less$"
        bin: %kernel.root_dir%/Resources/node_modules/less/bin/lessc
    coffee:
        apply_to: "\.coffee$"
        bin: %kernel.root_dir%/Resources/node_modules/coffee-script/bin/coffee
    uglifyjs2:
        apply_to: "\.js$"
        bin: %kernel.root_dir%/Resources/node_modules/uglify-js/bin/uglifyjs
    uglifycss:
        apply_to: "\.css$"
        bin: %kernel.root_dir%/Resources/node_modules/uglifycss/uglifycss

运行assetic:dump时出现以下错误:

  [Assetic\Exception\FilterException]                                             
  An error occurred while running:                                                
  '/usr/bin/node' '/tmp/assetic_lessFnBKuF'                                       

  Error Output:                                                                   

  module.js:340                                                                   
      throw err;                                                                  
            ^                                                                     
  Error: Cannot find module 'less'                                                
      at Function.Module._resolveFilename (module.js:338:15)                      
      at Function.Module._load (module.js:280:25)                                 
      at Module.require (module.js:364:17)                                        
      at require (module.js:380:17)                                               
      at Object.<anonymous> (/tmp/assetic_lessFnBKuF:1:74)                        
      at Module._compile (module.js:456:26)                                       
      at Object.Module._extensions..js (module.js:474:10)                         
      at Module.load (module.js:356:32)                                           
      at Function.Module._load (module.js:312:12)                                 
      at Function.Module.runMain (module.js:497:10)                               

【问题讨论】:

  • Coffeescript 真的有效还是 Less 只是第一个失败的?
  • 少是第一个失败的。
  • 如果我禁用 less 过滤器,一切正常,包括 coffescript。
  • 我知道这不是一个答案,但可能会对这个 LESS 编译器的 PHP 实现感兴趣:isometriks.com/using-less-with-symfony2
  • 我通常认为在源代码中包含节点依赖项是一个坏主意(最好将 npm install 作为进程的一部分处理),所以我倾向于认为错误在 node_paths 和在 sudo 中运行你的 Symfony 命令......但如果其余的工作正常,我就一无所知

标签: node.js symfony less symfony-2.3 symfony-2.2


【解决方案1】:

首先确保您的系统中安装了 less 及其依赖项:

npm install less -g

接下来,根据您的发行版,node_modules 可以驻留在不同的位置,因此请检查您是否安装了 less,以及 lessc 在哪里。检查我的配置:

less:
    bin: /usr/bin/lessc
    node: /usr/bin/nodejs
    node_paths: [/usr/lib/node_modules]
    apply_to: "\.less$"

【讨论】:

    猜你喜欢
    • 2018-12-30
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多