Javascript UglifyJS不在Symfony2生产环境中工作

Javascript UglifyJS不在Symfony2生产环境中工作,javascript,php,node.js,symfony,uglifyjs,Javascript,Php,Node.js,Symfony,Uglifyjs,我相信我已经正确配置了它——这是我的config.yml: assetic: debug: "%kernel.debug%" use_controller: false node: "/usr/local/bin/node" bundles: [ ] #java: /usr/bin/java filters: uglifyjs2: # the path to the uglif

我相信我已经正确配置了它——这是我的config.yml:

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    node: "/usr/local/bin/node"
    bundles:        [ ]
    #java: /usr/bin/java
    filters:
        uglifyjs2:
            # the path to the uglifyjs executable
            bin: "%kernel.root_dir%/Resources/node_modules/.bin/uglifyjs"
        cssrewrite: ~
我在项目中本地存储uglifyjs,只是为了便于分发

我正在使用uglifyjs执行以下操作以生成所有JS文件:

{% javascripts 
    'vendor/bower_components/jquery/dist/jquery.min.js'
    'vendor/bower_components/bootstrap-sass/assets/javascripts/bootstrap.min.js'
    'vendor/bower_components/angular-route/angular-route.min.js'
    'vendor/bower_components/underscore/underscore-min.js'
    'vendor/bower_components/angular-cookies/angular-cookies.min.js'
    'js/test1.js'
    'js/test2.js'
    filter='?uglifyjs2' %}

    <script src="{{ asset_url }}"></script>

{% endjavascripts %}
{%javascripts
'vendor/bower\u components/jquery/dist/jquery.min.js'
'vendor/bower_components/bootstrap sass/assets/javascripts/bootstrap.min.js'
'vendor/bower_components/angular route/angular route.min.js'
'vendor/bower_components/下划线/下划线-min.js'
'vendor/bower_components/angular cookies/angular cookies.min.js'
'js/test1.js'
“js/test2.js”
筛选器=“?uglifyjs2”%}
{%endjavascripts%}
如果我以dev模式(/app_dev.php)加载页面,它工作得很好,只需单独加载文件,但由uglifyjs缩小;但是,如果我尝试在生产环境中加载它,它会将所有这些js文件合并成一个js文件(即a07da66.js)。我面临的问题是,在尝试加载该文件(a07da66.js)时,它会收到一个404notfound错误。它尝试在
js/a07da66.js访问它,默认情况下,它似乎是在js/下创建的


当它在js/(js/a07da66_jquery.min_1.js)下创建新文件时,为什么它在app_dev.php中工作良好,但在生产环境中却不工作?

您必须运行
app/console--env=prod assetic:dump
才能为产品环境生成资产

经验法则:

  • 在开发模式下,保持
    app/console assetic:watch--force
    在后台运行(至少在处理JS/CSS文件时)。每当文件发生更改时,它将重新生成开发人员资产
  • 部署/构建时,运行一次app/console--env=prod assetic:dump
,以便生成prod的组合资产 prod模式的思想是生成当前开发的某种构建或快照。因此,您将仅在创建构建时使用app/console--env=prod-assetic:dump


当然,您可以将开发环境切换到prod进行简短的测试,但随后还必须执行构建过程(包括生成prod资产)。

在Symfony 3+中,您必须运行
bin/console assetic:dump--env=prod
来生成prod环境的文件


如果您对资产进行了修改,您必须每次运行
bin/console assetic:watch
,以重新生成文件。

您是否运行了
app/console--env=prod assetic:dump
?这样做了-您可以将其添加为答案吗?我是否必须在修改JS文件后运行它?是的,每次更改文件时,您都需要运行dump命令来重新生成资产。您是否尝试过
php应用程序/控制台assetic:dump--env=prod--no debug
??