質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

2035閲覧

Uncaught ReferenceError: jQuery is not defined について

Taka2401

総合スコア8

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/09/09 11:16

編集2021/09/10 06:47

前提・実現したいこと

Uncaught ReferenceError: jQuery is not definedのエラーを解決したいです。

既存のRailsアプリ(完成形)にVueを追加しようとしています。その際、Wevpackやcocoonなど必要なモジュールをyarnでインストールしていたところ、上記のエラーが発生しました。調べたところjQueryの読み込みが上手くいっていないと思い、yarn add jqueryでインストールしたり色々と試してみましたが解決できていません。ちなみにですが冒頭に記載の通り、アプリは完成形なのでjQueryを使用した機能(sliderやプレビュー)等が既にいくつかあります。なので、既存のjQueryの機能を残しつつ、ページを分けてVueを使えたらベストと考えています。

発生している問題・エラーメッセージ

エラーに記載されているように
①途中からインストールしたcocoonとjqueryがうまく読み込めていない。
②既存のbootstrapも同様に読み込めていない。と考えています。

console

1Uncaught ReferenceError: jQuery is not defined 2 at Object../node_modules/cocoon/app/assets/javascripts/cocoon.js (cocoon.js:115) 3 at __webpack_require__ (bootstrap:19) 4 at Module../app/javascript/packs/application.js (application.js:1) 5 at __webpack_require__ (bootstrap:19) 6 at bootstrap:83 7 at bootstrap:83 8./node_modules/cocoon/app/assets/javascripts/cocoon.js @ cocoon.js:115 9__webpack_require__ @ bootstrap:19 10./app/javascript/packs/application.js @ application.js:1 11__webpack_require__ @ bootstrap:19 12(anonymous) @ bootstrap:83 13(anonymous) @ bootstrap:83

該当のソースコード

app> assets> javascripts> application.js // This is a manifest file that'll be compiled into application.js, which will include all the files // listed below. // // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's // vendor/assets/javascripts directory can be referenced here using a relative path. // // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the // compiled file. JavaScript code in this file should be added after the last require_* statement. // // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details // about supported directives. // //= require jquery //= require rails-ujs //= require activestorage //= require jquery.bgswitcher //= require jquery.raty.js //= require moment //= require moment/ja.js //= require tempusdominus-bootstrap-4.js //= require bootstrap //= require cocoon //= require_tree window.onpageshow = function(event) { if ( event.persisted || window.performance && window.performance.navigation.type == 2 ) { window.location.reload(true); } /*global $*/ $('#tab-target-1').tab('show'); $('.bg-slider').bgSwitcher({ images: ['img/camp_image.10.jpg','img/camp_image.11.jpg','img/camp_image.12.jpg'], }); $(document).ready(function () { $("#slider").skippr({ transition : 'slide', speed : 1000, easing : 'easeOutQuart', navType : 'block', childrenElementType : 'div', arrows : true, autoPlay : true, autoPlayDuration : 3000, keyboardOnAlways : true, hidePrevious : false }); $('#post_image').on('change', function (e) { var reader = new FileReader(); reader.onload = function (e) { $("#preview").attr('src', e.target.result); }; reader.readAsDataURL(e.target.files[0]); }); /*global moment*/ $('.datepicker').datetimepicker({ format: 'YYYY-MM-DD HH:mm', minDate: moment(), enabledHours: [15, 16, 17, 18, 19, 20, 21, 22, 23, 24], }); $('select').change(function () { var selectedValue = $(this).val(); if (selectedValue === '1泊2日') { const changedfee = Number($('#fee')[0].innerText.replace('¥', '')) / 2; $('#fee')[0].innerText = `¥${changedfee}`; } else if(selectedValue === '2泊3日') { const changedfee = Number($('#fee')[0].innerText.replace('¥', '')) * 2; $('#fee')[0].innerText = `¥${changedfee}`; } }); $('select').change(function () { var selectedValue = $(this).val(); if (selectedValue === '1泊2日') { const changedfee = Number($('#total_fee')[0].innerText.replace('¥', '')) / 2; $('#total_fee')[0].innerText = `¥${changedfee}`; } else if(selectedValue === '2泊3日') { const changedfee = Number($('#total_fee')[0].innerText.replace('¥', '')) * 2; $('#total_fee')[0].innerText = `¥${changedfee}`; } }); }); };
app> javascript> packs> application.js require("@rails/ujs").start() require('jquery') import "bootstrap" import "cocoon"

packagejson

1{ 2 "name": "Beginners_Camp", 3 "private": true, 4 "dependencies": { 5 "@rails/ujs": "^6.1.4-1", 6 "@rails/webpacker": "5.4.2", 7 "axios": "^0.21.4", 8 "bootstrap": "^5.1.1", 9 "cocoon": "github:nathanvda/cocoon#c24ba53", 10 "jquery": "^3.6.0", 11 "rails-ujs": "^5.2.6", 12 "vue": "^2.6.14", 13 "vue-loader": "^15.9.8", 14 "vue-template-compiler": "^2.6.14", 15 "webpack": "^5.52.0", 16 "webpack-cli": "^3.3.12" 17 } 18}

試したこと

yarn addで jquery、bootstrap、rails/ujsのインストール
またエラーメッセージを調べたところ、application.jsでなるべく早くjqueryを読み込ませた方がエラーが出ないと知り、jqueryを早く読み込むようコードを修正しました。
また、Rails6ではありますが記事を参考にしてenvironment.jsに追記もしてみましたが以前解決できていません。
参考記事 https://techtechmedia.com/jquery-webpacker-rails/

app> assets> javascripts> application.js //= require jquery //= require rails-ujs //= require activestorage //= require jquery.bgswitcher //= require jquery.raty.js //= require moment //= require moment/ja.js //= require tempusdominus-bootstrap-4.js //= require bootstrap //= require cocoon //= require_tree
config> webpack> 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' // }) // ) const { VueLoaderPlugin } = require('vue-loader') const vue = require('./loaders/vue') environment.plugins.prepend('VueLoaderPlugin', new VueLoaderPlugin()) environment.loaders.prepend('vue', vue) module.exports = environment

補足情報(FW/ツールのバージョンなど)

windows10 home
Ruby 2.6.3
Ruby on Rails 5.2.6

どなたか何か解決に繋がるヒントを頂けますと幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

cocoonは使わずに一度webpackから再度インストールし直してなんとかVueページまで表示させることができました。

投稿2021/09/10 13:48

Taka2401

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問