【问题标题】:Error while using Bootstrap 4 with Rails 6 Webpacker将 Bootstrap 4 与 Rails 6 Webpacker 一起使用时出错
【发布时间】:2020-01-28 12:06:55
【问题描述】:

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

config/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;

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

例子:

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

// Error: Uncaught TypeError: $(…).tooltip is not a function

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


解决方案

config/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;

【问题讨论】:

    标签: ruby-on-rails webpack bootstrap-4 webpacker


    【解决方案1】:

    (1)

    您正在使用turbolinks,因此您应该依赖document:ready 而不是turbolinks:load 事件

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

    (2)

    不要使用 缩小版 javascript 库

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

    【讨论】:

    • 非常感谢您的帮助!在ProvidePlugin 内将jquery/dist/jquery.min 更改为jquery 成功了!!如果您可以添加为什么不将缩小的 JavaScript 库与 webpack 一起使用,那将是非常有用的。 :)
    猜你喜欢
    • 1970-01-01
    • 2020-11-05
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 2018-05-06
    • 2021-01-12
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多