javascript - $(...).tooltip 不是 Rails 6 webpack 的函数

标签 javascript jquery webpack bootstrap-4 ruby-on-rails-6

我尝试过更改 bootstrap、jquery 和 popper 的版本,但没有成功。我不认为我使用了多个版本的 jquery。不知道哪里出了问题。如果有人帮助我找到我所缺少的东西,那就太好了。

这是我的文件列表,

package.json:

{
  "name": "kf",
  "private": true,
  "dependencies": {
    "@fortawesome/fontawesome-free": "^5.12.1",
    "@rails/ujs": "^6.0.0",
    "@rails/webpacker": "4.2.2",
    "bootstrap": "^4.4.1",
    "jquery": "^3.4.1",
    "popper.js": "^1.16.1",
    "sweetalert2": "^9.8.2"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^3.10.3"
  }
}

config/webpack/environment.js

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

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

module.exports = environment;

application.js

require('@rails/ujs').start();
require('jquery/dist/jquery');
require('popper.js/dist/umd/popper');
require('bootstrap/dist/js/bootstrap');
require('@fortawesome/fontawesome-free');
require('./owl.carousel.min');
require('./fastclick');
require('./custom-script');
require('./return-to-top');

const Swal = require('sweetalert2');
window.Swal = Swal;
const images = require.context('../images', true);
const imagePath = name => images(name, true);
import 'stylesheets/application';

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

警告:

jQuery.Deferred exception: $(...).tooltip is not a function TypeError: $(...).tooltip is not a function

错误:

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

最佳答案

我已经通过在 webpack 文件夹中添加一个 custom.js 来解决,就像在 webpack 配置 git 文档中一样:

https://github.com/rails/webpacker/blob/master/docs/webpack.md#configuration

#config/webpack/custom.js

module.exports = {
  resolve: {
    alias: {
      jquery: 'jquery/src/jquery'
    }
  }
};

我的config/webpack/environment.js更改为

const { environment } = require('@rails/webpacker');
const customConfig = require('./custom');
const webpack = require('webpack');

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

module.exports = environment;

重新启动服务器,工具提示工作正常。

注意:您不需要添加 require('jquery') , require('popper')application.js

关于javascript - $(...).tooltip 不是 Rails 6 webpack 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60470917/

相关文章:

javascript - 如何为单独的 webpack 服务器/客户端配置正确覆盖 babel@7 插件

javascript - 将 Three.js 场景设置为 jQuery 模态窗口

javascript - 我的 Django 应用程序中带有 Javascript 的 Chronometer 脚本

javascript - jQuery 定位 `ul` 中的下一个 `li` 元素,类为 `active`

javascript - 为什么我的代码没有禁用鼠标滚轮事件?

laravel - Nwidart Laravel 模块使用 webpack 和 mix 管理资源。

javascript - 在单独的回调(函数)中访问 js 变量

javascript - 如何防止我们的 URL 遭受跨站脚本攻击 (XSS)?

javascript - 如何在 html2canvas 中插入 jquery

css - Webpack:有没有办法在处理之前替换导入的文件路径?