2015-11-02 42 views
0

我尝试运行Rails应用程序(Rails的4.2.0)在生产模式下使用这些设置:滑轨生产:JavaScript文件无法运行

配置/环境/ production.rb

require 'uglifier' 

Rails.application.configure do 
    config.cache_classes = true 
    config.eager_load = true 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 
    config.assets.js_compressor = Uglifier.new(output: {ascii_only: true, quote_keys: true}) 
    config.serve_static_files = true 
    config.assets.js_compressor = :uglifier 
    config.assets.compile = false 
    config.assets.digest = true 
    config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' 
    config.log_level = :debug 
    config.i18n.fallbacks = true 
end 

配置/初始化/ assets.rb

Rails.application.config.assets.version = '1.0' 
Rails.application.config.assets.precompile += %w(ckeditor/* admin.*) 

应用程序/资产/ APPLICAT ion.js

//= require jquery 
//= require jquery_ujs 
//= require bootstrap-sprockets 
//= require ckeditor/init 
//= require select2 
//= require init/select2 
//= require lib/jquery.mCustomScrollbar.min 
//= require lib/moment.min 
//= require lib/daterangepicker 
//= require init/daterangepicker 
//= require lib/bootstrap-notify 
//= require underscore 
//= require gmaps/google 
// lightgallery: 
//= require lib/lightgallery/picturefill.min.js 
//= require lib/lightgallery/lightgallery 
//= require lib/jquery.mousewheel.min.js 
//= require jquery.sortable 
//= require photos 
//= require_tree ./admin 
//= require_tree . 

应用程序/资产/ photos.js

// Loading photo for resources 
(function($) { 
    conslole.log('It is photos.js') 
    // Check File API support 
    if(window.File && window.FileList && window.FileReader){ 
    var filesInput = document.getElementById('upload_photos'); 
    //... 
    } 

}()); 

我希望在浏览器控制台消息 '这是photos.js' 看,但它是不存在的。

我探索编译的文件

http://localhost:3000/assets/admin-a0144eae675b202d7e9a9fbca944636e6aa24fe7b0140b44ec68928303bc4717.js

,发现这段代码在浏览器来源:

(function($) { 
    console.log('It is photos.js') 
    // Check File API support 
    if(window.File && window.FileList && window.FileReader){ 
    var filesInput = document.getElementById('upload_photos'); 
    //... 
    } 
}()); 

我不明白为什么在控制台显示任何消息。

但很多其他js文件和库工作正常。

回答

0

在您的应用程序目录中尝试rake assets:precompile然后在生产中推送新的编译文件。我遇到了资产文件在生产中没有正确加载的相同问题,这个命令对我来说是个窍门。

希望它帮助;)

+0

当然,我做到了,但有些js文件并不适用于DOM。 –

+0

您在行尾'conslole.log('它是photos.js')忘记了分号' – BachirC

+0

没有必要 –