前提・実現したいこと
rails 6 を使っています。
yarn add jquery
でインストール・設定したのですが、 jQuery を erb ファイルから呼び出すことができません。
erb
1<script> 2 jQuery(function($) { 3 alert("hello") 4 }) 5</script>
発生している問題・エラーメッセージ
chrome の console には以下が発生します。
Uncaught ReferenceError: jQuery is not defined
console 上で jquery のバージョン確認をするため以下のコマンドを叩くと似たようにエラーになります。
js
1> $.fn.jquery 2Uncaught TypeError: Cannot read property 'jquery' of undefined 3 at <anonymous>:1:6
該当のソースコード
config/webpack/environment.js ↓
js
1// config/webpack/environment.js 2const { environment } = require('@rails/webpacker') 3 4const webpack = require('webpack') 5environment.plugins.prepend( 6 'Provide', 7 new webpack.ProvidePlugin({ 8 $: 'jquery', 9 jQuery: 'jquery', 10 Popper: ['popper.js', 'default'] 11 }) 12) 13 14module.exports = environment
app/javascript/packs/application.js ↓
js
1require("@rails/ujs").start() 2require("turbolinks").start() 3require("@rails/activestorage").start() 4require("channels") 5require("jquery") 6 7import 'bootstrap'; 8 9document.addEventListener("turbolinks:load", () => { 10 $('[data-toggle="tooltip"]').tooltip() 11 $('[data-toggle="popover"]').popover() 12}); 13 14require("trix") 15require("@rails/actiontext")
補足情報
実はこの状況で bootstrap4 の tooltip や popover などは動いています。
(つまり、 jQuery や popper は使えているはず)
そして、
config/webpack/environment.js の ProviderPlugin の jquery のパスを以下のようにすると
問題は改善され、代わりに bootstrap4 の tooltip や popup が動かなくなります(T_T)
js
1 new webpack.ProvidePlugin({ 2 $: 'jquery/src/jquery', // ← 第2引数の記述が冒頭のやつと異なる 3 jQuery: 'jquery/src/jquery', // ← 第2引数の記述が冒頭のやつと異なる
回答1件
あなたの回答
tips
プレビュー