【发布时间】:2021-08-21 08:23:18
【问题描述】:
第二次尝试通过 webpack 而不仅仅是从 CDN 加载 Rails 应用程序的引导程序(和 jquery)。 我在这里关注了这篇很棒的帖子:https://stevepolito.design/blog/rails-6-bootstrap-4-webpacker-tutorial/ - 我知道这引用了 bootstrap 4(我正在尝试使用最新的 bootstrap 5),我认为这可能是问题所在。 我已经调整 popper.js 被 @popper.js/core 替换(即“纱线添加”行)。
会发生以下情况: 我已经从引导网站中删除了示例代码,以检查工具提示、弹出框和模式是否有效。
- 工具提示可以使用,但它们的位置不起作用(它们都显示在顶部,而不是底部/右侧/左侧)
- modals 根本不起作用 - 我可以点击,但没有任何反应
- 弹出框有效,但只显示标题 - 不显示内容
javascript 控制台没有给出任何错误。但是,当我手动尝试 jquery.version 时,我得到一个“未捕获的 ReferenceError:jquery 未定义”。
这是我的 config/webpack/environment.js(我插入了 window.jquery 行):
const { environment } = require('@rails/webpacker')
const webpack = require('webpack')
environment.plugins.prepend(
'Provide',
new webpack.ProvidePlugin({
$: 'jquery/src/jquery',
jQuery: 'jquery/src/jquery',
jquery: 'jquery/src/jquery',
'window.jQuery': 'jquery/src/jquery',
'window.Tether': "tether",
Popper: ['popper.js', 'default'],
})
)
module.exports = environment
这是我的 app/packs/application.js
import Rails from "@rails/ujs"
import Turbolinks from "turbolinks"
import * as ActiveStorage from "@rails/activestorage"
import "channels"
Rails.start()
Turbolinks.start()
ActiveStorage.start()
require("jquery")
import "bootstrap"
import "../stylesheets/application";
document.addEventListener("turbolinks:load", function () {
$(function () {
$('[data-toggle="tooltip"]').tooltip()
$('[data-toggle="popover"]').popover()
})
})
这是我的 app/stylesheets/application.scss(样式似乎可以正常工作):
@import '~bootstrap/scss/bootstrap'
任何帮助表示赞赏。我确实尝试过搜索 - 有很多关于类似问题的帖子,但我还没有找到与此问题相关的任何内容。
【问题讨论】:
标签: jquery ruby-on-rails webpack bootstrap-5