首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >资产管道出现问题

资产管道出现问题
EN

Stack Overflow用户
提问于 2012-11-11 12:24:01
回答 2查看 1.7K关注 0票数 1

好了,我的资产管道突然开始在我的开发机器上出现问题。以前有效的JS函数现在抛出"not a function“错误。我知道我一定是做错了什么。一分钟前datatables jquery函数工作,然后抛出一个错误,然后它工作,现在它不工作或抛出错误。

这是我的application.js

代码语言:javascript
复制
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require_self
//= require_tree .
//= require dataTables/jquery.dataTables
//= require dataTables/jquery.dataTables.bootstrap
//= require bootstrap
//= require bootstrap-tooltip
//= require bootstrap-popover
//= require bootstrap-tab
//= require bootstrap-modal
//= require bootstrap-alert
//= require bootstrap-dropdown
//= require jquery.ui.addresspicker
//= require raty
//= require jquery.alphanumeric
//= require jquery.formrestrict
//= require select2
//= require chosen/chosen.jquery
//= require highcharts
//= require jquery.lazyload

下面是我的一些布局标题:

代码语言:javascript
复制
  <%= stylesheet_link_tag "application", media: "all" %>
  <%= yield(:scripthead) %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>    
  <%= yield(:head) %>   

上面我使用load从google加载在线脚本,因为它们只在一些页面上需要,如果包含在应用程序布局中,通常会减慢网站的速度。我试着删除were,但仍然有问题,即使在清除了浏览器缓存并运行了rake assets:clean (只是为了安全起见)。

下面是CSS和元标记之间显示的内容(对于一个在yield中没有任何内容的页面):

代码语言:javascript
复制
  <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
<script src="/assets/aidmodels.js?body=1" type="text/javascript"></script>
<script src="/assets/audio.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-alert.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-dropdown.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-modal.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-popover.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-tab.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-tooltip.js?body=1" type="text/javascript"></script>
<script src="/assets/branches.js?body=1" type="text/javascript"></script>
<script src="/assets/charts.js?body=1" type="text/javascript"></script>
<script src="/assets/chosen/backup_chosen.jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/chosen/chosen.jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/consumers.js?body=1" type="text/javascript"></script>
<script src="/assets/dispensers.js?body=1" type="text/javascript"></script>
<script src="/assets/favorites.js?body=1" type="text/javascript"></script>
<script src="/assets/features.js?body=1" type="text/javascript"></script>
<script src="/assets/generic_styles.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.base.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.bing.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.googlemaps.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.mapquest.js?body=1" type="text/javascript"></script>
<script src="/assets/gmaps4rails/gmaps4rails.openlayers.js?body=1" type="text/javascript"></script>
<script src="/assets/highcharts.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery-ui-1.8.18.custom.min.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.alphanumeric.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.formrestrict.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.lazyload.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.ui.addresspicker.js?body=1" type="text/javascript"></script>
<script src="/assets/likes.js?body=1" type="text/javascript"></script>
<script src="/assets/messages.js?body=1" type="text/javascript"></script>
<script src="/assets/overalls.js?body=1" type="text/javascript"></script>
<script src="/assets/pages.js?body=1" type="text/javascript"></script>
<script src="/assets/questions.js?body=1" type="text/javascript"></script>
<script src="/assets/raty.js?body=1" type="text/javascript"></script>
<script src="/assets/reviews.js?body=1" type="text/javascript"></script>
<script src="/assets/sessions.js?body=1" type="text/javascript"></script>
<script src="/assets/styles.js?body=1" type="text/javascript"></script>
<script src="/assets/tickets.js?body=1" type="text/javascript"></script>
<script src="/assets/universities.js?body=1" type="text/javascript"></script>
<script src="/assets/users.js?body=1" type="text/javascript"></script>
<script src="/assets/dataTables/jquery.dataTables.js?body=1" type="text/javascript"></script>
<script src="/assets/dataTables/jquery.dataTables.bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-transition.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-affix.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-button.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-carousel.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-collapse.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-scrollspy.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap-typeahead.js?body=1" type="text/javascript"></script>
<script src="/assets/bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/select2.js?body=1" type="text/javascript"></script>

来自application.rb:

代码语言:javascript
复制
config.assets.initialize_on_precompile = false
# Enable the asset pipeline
config.assets.enabled = true
config.action_controller.assets_dir = "#{File.dirname(File.dirname(__FILE__))}/public"

# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'

很抱歉,我不确定还能包括什么来帮助解决这个难题,但任何建议都将不胜感激。在我尝试上传到heroku之前,我没有遇到任何问题,但现在一切都乱套了。

编辑:

在控制台上,我看到了

代码语言:javascript
复制
Uncaught TypeError: Cannot read property 'Constructor' of undefined bootstrap-popover.js:33
Uncaught ReferenceError: google is not defined jquery.ui.addresspicker.js:25
Uncaught TypeError: Object [object Object] has no method 'popover' overall:476

编辑2:

多亏了下面的一个评论,我才能弄明白这一点。我不得不重新调整application.js包含的内容以使其更有意义:

代码语言:javascript
复制
//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require bootstrap
//= require bootstrap-tooltip
//= require bootstrap-popover
//= require bootstrap-tab
//= require bootstrap-modal
//= require bootstrap-alert
//= require bootstrap-dropdown
//= require dataTables/jquery.dataTables
//= require dataTables/jquery.dataTables.bootstrap
//= require jquery.ui.addresspicker
//= require raty
//= require jquery.alphanumeric
//= require jquery.formrestrict
//= require select2
//= require chosen/chosen.jquery
//= require highcharts
//= require jquery.lazyload
//= require_self
//= require_tree .

天哪,这快把我逼疯了..不,它还是不能工作。最后一次编辑让一切正常工作,但随后我运行了rake assets:再次预编译并推送到heroku。它在Heroku上又不起作用了..信不信由你,当我回到我的本地主机版本时,它又坏了,现在又抛出了不同的错误,并且再次没有加载数据表!

代码语言:javascript
复制
Uncaught ReferenceError: google is not defined jquery.ui.addresspicker.js:25
Uncaught ReferenceError: google is not defined application.js:26
Uncaught TypeError: Object [object Object] has no method 'lazyload' overall:496
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-11 12:27:17

你确定你没有把分号忘在JS里的什么地方吗?asset管道不执行任何代码清理...

在浏览器的JS控制台中查看错误发生的位置……

编辑:好的,我想看看是怎么回事。尝试取出末尾的require_tree,并手动加载您尚未显式说明的任何其他JS文件。最终发生的是,require_tree覆盖了以前明确列出的任何要求,并最终按字母顺序加载它们。

此外,我不知道您在bootstrap.js中使用的是什么gem (或者您是否正在使用它),但也可以尝试使用twitter/bootstrap,而不只是bootstrap

票数 3
EN

Stack Overflow用户

发布于 2012-11-11 12:29:21

这是在什么环境下发生的?尝试在env/production.rb或您正在运行的任何环境中执行config.assets.enabled = true。我相信在生产环境中这个设置是默认关闭的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13328559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档