我正在使用Symfony“2.3。*”,我尝试使资产更少的过滤器工作。 我在“开发”环境中做了所有这些。
当我发出config:dump-reference assetic
时,我得到以下输出:
assetic:
debug: %kernel.debug%
use_controller:
enabled: %kernel.debug%
profiler: false
read_from: %kernel.root_dir%/../web
write_to: %assetic.read_from%
java: /usr/bin/java
node: /usr/bin/node
node_paths: []
ruby: /usr/bin/ruby
sass: /usr/bin/sass
variables:
# Prototype
name: []
bundles:
# Defaults:
- FrameworkBundle
- SecurityBundle
- TwigBundle
- MonologBundle
- SwiftmailerBundle
- AsseticBundle
- DoctrineBundle
- SensioFrameworkExtraBundle
- FOSUserBundle
- JMSSerializerBundle
- YuccaPrerenderBundle
- WebProfilerBundle
- SensioDistributionBundle
- SensioGeneratorBundle
assets:
# Prototype
name:
inputs: []
filters: []
options:
# Prototype
name: []
filters:
# Prototype
name: []
twig:
functions:
# Prototype
name: []
所以,我的配置如下:
assetic:
debug: %kernel.debug%
use_controller: false
bundles:
- PlastoriaGiftoFrontBundle
#java: /usr/bin/java
node: "/usr/bin/nodejs"
node_paths: [ "/home/webadmin/websites/gifto/node_modules" ]
filters:
cssrewrite: ~
less: ~
closure:
jar: %kernel.root_dir%/Resources/java/compiler.jar
yui_css:
jar: %kernel.root_dir%/Resources/java/yuicompressor-2.4.8.jar
为了测试它是否有效,我打开Symfony控制台并发出cache:clear
然后我转到缓存目录(app / cache)并执行rm -rf *
。
在我回到Symfony控制台并启动这两个命令之后:
assets:install
assetic:dump
我收到以下消息:
转储所有开发资产。调试模式已打开。 13:51:22 [档案+] /home/webadmin/websites/gifto/app/../web/css/ac28136.css [Assetic \ Exception \ FilterException]运行时发生错误: '/ usr / bin / nodejs''/ tmp / assetic_lessjHtxDR'错误输出: module.js:340 扔错了; ^错误:找不到'less'模块 在Function.Module._resolveFilename(module.js:338:15)...(截断)
考虑节点二进制文件的配置:An error occurred while running: '/usr/bin/nodejs'
默认情况下,值为/usr/bin/nodejs
。
我无法弄清楚出了什么问题。使用 npm 在应用程序中安装“less”节点模块,并在发出npm ls
时,我看到它已正确安装。
我还在应用程序目录中启动了 nodejs 并执行了require('less')
并且它没有错误地工作。
使用nodejs配置资产的正确方法是什么?
答案 0 :(得分:3)
对于mac用户,这是
node: "/usr/local/bin/node"
node_paths: [/usr/local/lib/node_modules/]
答案 1 :(得分:2)
添加
assetic:
node_paths: [/usr/lib/node_modules/]
/usr/lib/node_modules/
适用于Ubuntu。
答案 2 :(得分:1)
我正在使用带有cPanel安装的Centos。我犯了一个错误,当你运行npm install时没有意识到它会出现在我调用的目录中,在我的情况下是我的项目根目录。
当您安装较少的node_modules文件夹时,您所在的目录应该在那里。然而,这是错误的位置。
假设您在同一目录中运行安装...运行此命令将其移动到正确的位置
mv node_modules /usr/local/lib/node_modules
然后你需要在config.yml
中添加一行assetic:
debug: '%kernel.debug%'
use_controller: '%kernel.debug%'
filters:
cssrewrite: ~
uglifyjs2:
# the path to the uglifyjs executable
bin: /usr/bin/uglifyjs
uglifycss:
bin: /usr/bin/uglifycss
less:
node_paths: [/usr/local/lib/node_modules/]
bin: /usr/bin/less
在我的情况下,我使用了很多其他过滤器,但这里的关键是node_paths: [/usr/local/lib/node_modules/]
,请确保您拥有该过滤器。请注意,现在设置为脚本可以全局访问的位置。
现在它会起作用。希望这有助于某人。
答案 3 :(得分:0)
实测值,
我作为 root 进入服务器(是的,我知道,不好的做法)然后我su webadmin
!
诀窍是真正以 webadmin 或su webadmin -l
登录。
我测试了,这是问题。