Веб-упаковщик Rails 6 — добавление шаблона начальной загрузки. Проблема с «Неперехваченной ошибкой типа: $ (…).dateRangePicker не является функцией»

#jquery #ruby-on-rails-6 #webpacker #daterangepicker

#jquery #ruby-on-rails-6 #webpacker #daterangepicker

Вопрос:

Я изо всех сил стараюсь разбить Webpacker на Rails 6. Я следую руководству здесь, в котором описано, как наилучшим образом добавить тему начальной загрузки в новый проект Rails 6. Все работает нормально при добавлении в библиотеки js через yarn. Затем я добавляю в datepicker-category.js файл, создав папку поставщика в javascripts и вызвав ее с помощью import .

Опять же, все выглядит нормально в отношении компиляции. Я получаю некоторые ошибки в консоли браузера, когда добавляю новые файлы js в папки поставщиков. Поскольку это совершенно новое приложение Rails 6 с довольно простой конфигурацией webpack, я надеюсь, что кто-нибудь сможет пролить свет на мои ограниченные знания интерфейса / jQuery.

Онлайн-учебник, который я читаю: здесь.

Итак, создано приложение Rails 6. Контроллер страниц с индексным представлением. Вот и все.

Package.json

 {
  "name": "touriousity",
  "private": true,
  "dependencies": {
    "@popperjs/core": "^2.6.0",
    "@rails/actioncable": "^6.0.0",
    "@rails/activestorage": "^6.0.0",
    "@rails/ujs": "^6.0.0",
    "@rails/webpacker": "4.3.0",
    "bootstrap": "^4.6.0",
    "bootstrap-select": "^1.13.18",
    "dropzone": "^5.7.6",
    "jquery": "^3.5.1",
    "jquery-ui": "^1.12.1",
    "jquery.cookie": "^1.4.1",
    "leaflet": "^1.7.1",
    "magnific-popup": "^1.1.0",
    "nouislider": "^14.6.3",
    "object-fit-images": "^3.2.4",
    "popper.js": "^1.16.1",
    "prismjs": "^1.23.0",
    "smooth-scroll": "^16.1.3",
    "swiper": "^6.4.11",
    "turbolinks": "^5.2.0"
  },
  "version": "0.1.0",
  "devDependencies": {
    "webpack-dev-server": "^3.11.2"
  }
}
 

application.js

 // This file is automatically compiled by Webpack, along with any other files
// present in this directory. You're encouraged to place your actual application logic in
// a relevant structure within app/javascript and only use these pack files to reference
// that code so it'll be compiled.

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")


// Uncomment to copy all static images under ../images to the output folder and reference
// them with the image_pack_tag helper in views (e.g <%= image_pack_tag 'rails.png' %>)
// or the `imagePath` JavaScript helper below.
//
// const images = require.context('../images', true)
// const imagePath = (name) => images(name, true)


import JQuery from 'jquery';
window.jQuery = $;
window.$ = $;

import "popper.js";
import "bootstrap";
import "bootstrap-select";
import "dropzone";
import "jquery.cookie";
import "leaflet";
import "magnific-popup";
import "nouislider";
import "object-fit-images";
import "prismjs";
import "smooth-scroll";
import "swiper";


import "../vendor/datepicker-category"
import "../vendor/datepicker-detail"
import "../vendor/forms-dropzone"
import "../vendor/map-category"
import "../vendor/map-detail"
import "../vendor/map-layers"
import "../vendor/theme"
 

environment.js

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

// Add an additional plugin of your choosing : ProvidePlugin
environment.plugins.prepend(
  "Provide",
  new webpack.ProvidePlugin({
    $: "jquery",
    jQuery: "jquery",
    Popper: ["popper.js", "default"] // for Bootstrap 4
  })
);

module.exports = environment
 

Изображения ошибок в браузере прилагаются. Миллион благодарностей.

введите описание изображения здесь
введите описание изображения здесь

Ответ №1:

Вы пробовали обновить jQuery до последней версии? Я столкнулся с аналогичной проблемой и смог решить ее только путем обновления до версии 3.6.0.

Комментарии:

1. Интересный Шон. Я попробую это сделать, как только вернусь к проекту. Рад узнать, что у кого-то еще была такая же проблема. Поэтому я попробую, как только вернусь к этому личному проекту. Спасибо миллион.