【发布时间】:2018-10-07 16:17:52
【问题描述】:
我已经解决这个问题一段时间了,我被卡住了。
我有一个使用 Bootstrap 4 的 rails 4.1.0 应用程序。一切都在本地运行,但是当我推送到我的生产 heroku 服务器时,js 已编译,但页面上的所有 js 都已损坏。
服务器日志中没有错误,但是控制台中有错误:
Uncaught ReferenceError: Popper 未定义 在应用程序-21bd05413e87683d1fbc6420906ba3317d416c1d0b78d17c25e793b78e405352.js:5 (index):85 Uncaught TypeError: $(...).datetimepicker is not a function 在 HTML 文档。 ((指数):85) 在 l (application-21bd05413e87683d1fbc6420906ba3317d416c1d0b78d17c25e793b78e405352.js:2) 在 Object.fireWith [as resolveWith] (application-21bd05413e87683d1fbc6420906ba3317d416c1d0b78d17c25e793b78e405352.js:2) 在 Function.ready (application-21bd05413e87683d1fbc6420906ba3317d416c1d0b78d17c25e793b78e405352.js:2) 在 HTMLDocument.a (application-21bd05413e87683d1fbc6420906ba3317d416c1d0b78d17c25e793b78e405352.js:1)
已安装的宝石:
gem 'rails', '4.2.6'
gem 'sqlite3', group: :development
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'puma'
gem 'devise'
gem 'omniauth'
gem 'omniauth-facebook', '~> 4.0.0'
gem 'pg', '~> 0.18.4'
gem 'bootstrap', '~> 4.1.0'
gem 'sprockets-rails', :require => 'sprockets/railtie'
gem 'bootstrap-glyphicons'
gem 'bootstrap-select-rails'
gem 'momentjs-rails', '>= 2.9.0'
gem 'bootstrap4-datetime-picker-rails'
gem 'client_side_validations'
gem 'validates_timeliness', '~> 4.0'
source 'https://rails-assets.org' do
gem 'rails-assets-tether', '>= 1.3.3'
end
group :development, :test do
gem 'byebug'
end
group :development do
gem 'web-console', '~> 2.0'
gem 'spring'
end
application.js:
//=require tether
//=require popper
//=require turbolinks
//=require jquery3
//=require jquery_ujs
//=require bootstrap-sprockets
//=require_tree
//=require moment
//=require tempusdominus-bootstrap-4.js
//=require bootstrap-select
//=require rails.validations
//=require bootstrap/alert
//=require bootstrap/dropdown
大多数有类似问题的人都可以通过更改 application.js 文件中库的顺序来解决它们,但我几乎尝试了所有在 jquery、bootstrap、popper 中移动的组合,但没有任何成功。
我不确定还可以尝试什么。
【问题讨论】:
-
尝试将
require_tree移动到底部。您想在库加载之后加载您的自定义 JS。 -
将 require_tree 移到底部没有效果。
-
你确定吗?我认为这至少可以消除
Uncaught ReferenceError: Popper is not defined错误,让我们少解决一个问题。 -
是的,我只是仔细检查了提交并重新部署。仍然得到相同的 2 个控制台错误 :(
标签: javascript jquery ruby-on-rails twitter-bootstrap heroku