Откуда берется jquery?? (Рельсы)

#javascript #jquery #ruby-on-rails

Вопрос:

Я пытаюсь отладить плагин jquery в Ruby on Rails, для которого требуется jquery.

Я установил jquery через yarn и требую его в application.js… но поиск по отладке заставил меня поверить, что я загружал jquery несколько раз, и действительно — ДАЖЕ если я удалю оператор «требуется…» из application.js, $().jquery по-прежнему приводит к 1.6. при вводе его в консоль…

Я искал везде и просто не могу понять, откуда берется jquery, так есть ли (окончательный и конечный) список мест, из которых он может быть загружен?

РЕДАКТИРОВАТЬ: Я сделал список пряжи ПОСЛЕ удаления jquery с помощью yarn remove jquery (и действительно, его все еще нет в package.json), НО он все еще указан (и подпапка для jquery все еще находится в node_modules). У меня все еще есть код инициализации jquery config/webpack/environment.js, и ТОЛЬКО когда я удаляю этот код, jquery больше нет. Так что в двух словах это кажется:

  • jQuery является частью модулей узлов, хотя я удалил его с помощью yarn remove (?)
  • jquery может быть инициализирован таким образом в environment.js
  • jquery не обязательно требуется в application.js

Я должен сказать, что это выше моего понимания…. любая помощь ценится. Единственное, что я пытаюсь решить, это: я импортирую плагин jquery под названием easy-автозаполнение (работает как шарм), а затем я также пытаюсь импортировать selectize, но получаю сообщение об ошибке «selectize() не определен»…

Содержание environment.js:

 const { environment } = require("@rails/webpacker");  const webpack = require("webpack"); environment.plugins.prepend(  "Provide",  new webpack.ProvidePlugin({  $: "jquery/src/jquery",  jQuery: "jquery/src/jquery",  }) );  module.exports = environment;  

ИЗМЕНИТЬ: package.json после удаления jquery:

 {  "name": "myapp",  "private": true,  "dependencies": {  "@rails/actioncable": "^6.0.0",  "@rails/activestorage": "^6.0.0",  "@rails/ujs": "^6.0.0",  "@rails/webpacker": "5.4.3",  "easy-autocomplete": "^1.3.5",  "selectize": "^0.12.6",  "turbolinks": "^5.2.0",  "webpack": "^4.46.0",  "webpack-cli": "^3.3.12"  },  "version": "0.1.0",  "devDependencies": {  "webpack-dev-server": "^3"  } }  

Gemfile (комментарии удалены):

 source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" }  ruby '3.0.0'  gem 'rails', '~gt; 6.1.4', 'gt;= 6.1.4.1' gem 'mysql2', '~gt; 0.5' gem 'puma', '~gt; 5.0' gem 'sass-rails', 'gt;= 6' gem 'webpacker', '~gt; 5.0' gem 'turbolinks', '~gt; 5' gem 'jbuilder', '~gt; 2.7' # gem 'redis', '~gt; 4.0' # gem 'bcrypt', '~gt; 3.1.7'  gem 'image_processing', '~gt; 1.2'  gem 'bootsnap', 'gt;= 1.4.4', require: false  gem 'pagy' gem 'ransack' gem 'nokogiri' gem 'open-uri'  group :development, :test do  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end  group :development do  gem 'web-console', 'gt;= 4.1.0'  gem 'rack-mini-profiler', '~gt; 2.0'  gem 'listen', '~gt; 3.3'  gem 'spring'   gem 'htmlbeautifier'  gem 'solargraph'  gem 'rubocop' end  group :test do  gem 'capybara', 'gt;= 3.26'  gem 'selenium-webdriver'  gem 'webdrivers' end  gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]  

.

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

1. Вы используете звездочки или веб-пакет? Я считаю, что Webpack теперь используется по умолчанию. Кроме того, какая версия rails?

2. Ах, извините, забыл. Да, webpack и Rails 6.1.4.1

3. На самом деле это будет либо файл Gemfile, либо пакет.json afaik. Возможно , jquery, который вы видите, исходит из расширения в вашем браузере или что-то в этом роде, я бы проверил в режиме инкогнито, чтобы убедиться, что вы испытываете то же самое.

4. Это в пакете.json, но я не включил его в свой application.js… так как же он будет загружен? Вот что меня озадачивает…

5. Хорошо ли удаление его из пакета.json устраняет проблему? Возможно, Rails делает там какую-то «магию» и включает ее автоматически. Эти разработчики любят магию.