$ (...). Всплывающая подсказка не является функцией rails 6 webpack - PullRequest
1 голос
/ 01 марта 2020

Я пытался изменить версии bootstrap, jquery и поппер, но не повезло. Я не думаю, что я использую более одной версии jquery. Не уверен, где это пошло не так. Было бы здорово, если бы кто-нибудь помог мне найти то, что мне не хватает.

Вот мой список файлов, пакет

. 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;

приложение. 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

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Я решил добавить пользовательский. js в папке веб-пакета, как в конфигурации веб-пакета 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

1 голос
/ 01 марта 2020

Я думаю, что ваш конфиг веб-пакета должен быть таким

    new webpack.ProvidePlugin({
        $: "jquery",
        jQuery: "jquery",
        Popper: ['popper.js', 'default']
    }),

Дайте мне знать, если у вас все еще есть ошибки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...