将 Bootstrap 4 与 Rails 6 Webpacker 一起使用时出错

dp7*_*dp7 2 ruby-on-rails webpack bootstrap-4 webpacker

我有一个非常简单的 Rails 6 应用程序,其中 jquery 配置如下:

配置/webpack/environment.js :

const { environment } = require('@rails/webpacker');

const webpack = require('webpack');

environment.plugins.append('Provide', new webpack.ProvidePlugin({
    $: 'jquery/dist/jquery.min',
    jQuery: 'jquery/dist/jquery.min',
    Popper: ['popper.js', 'default']
}));

module.exports = environment;
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 Bootstrap。但是,我无法将任何 Bootstrap JS 方法与 JQuery 选择器一起使用。

例子:

$(document).ready(function(){
    $('[data-toggle="tooltip"]').tooltip();
});

// Error: Uncaught TypeError: $(…).tooltip is not a function
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!谢谢


解决方案

配置/webpack/environment.js :

const { environment } = require('@rails/webpacker');

const webpack = require('webpack');

environment.plugins.append('Provide', new webpack.ProvidePlugin({
    $: 'jquery',
    jQuery: 'jquery',
    Popper: ['popper.js', 'default']
}));

module.exports = environment;
Run Code Online (Sandbox Code Playgroud)

Lyz*_*yng 5

(1)

您正在使用turbolinks,因此document:ready您应该依赖turbolinks:loadevent

document.addEventListener("turbolinks:load", () => {
  $("[data-toggle='tooltip']").tooltip()
})
Run Code Online (Sandbox Code Playgroud)

(2)

不要使用缩小的javascript 库

// application.js
import "bootstrap"
Run Code Online (Sandbox Code Playgroud)
// config/webpack/environment.js
environment.plugins.append('Provide', new webpack.ProvidePlugin({
  $: 'jquery',
  jQuery: 'jquery',
  Popper: ['popper.js', 'default']
}));
Run Code Online (Sandbox Code Playgroud)