🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Q&A

解決済

1回答

6075閲覧

RailsでUncaught Error: Cannot find module 'bootstrap'となり、j Queryが読み込めない

kiyomasa

総合スコア40

Ruby on Rails

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

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

0グッド

0クリップ

投稿2021/03/07 01:24

編集2021/03/16 01:41

rails チュートリアルでブラウザ側にて

Uncaught Error: Cannot find module 'bootstrap'エラーがずっと残って消えません。

事象として、イメージ説明

ブラウザの検証ツールで上記画像のようなエラー

Uncaught Error: Cannot find module 'bootstrap' at webpackMissingModule (application.js:2) at Module../app/javascript/packs/application.js (application.js:2) at __webpack_require__ (bootstrap:19) at bootstrap:83 at bootstrap:83

本来ヘッダーのAccount欄がクリックするとドロップダウンメニューが出てくるはずなのだが出てこない
イメージ説明

ちなみにテストは全てパスしているが、サーバー側でもエラー表示がされている

サーバー側のメッセージ(rails server)

ERROR in ./app/javascript/packs/application.js Module not found: Error: Can't resolve 'bootstrap' in '/Users/kiyomasa/environment/sample_app/app/javascript/packs' @ ./app/javascript/packs/application.js 11:0-19 ERROR in ./app/javascript/packs/application.js Module not found: Error: Can't resolve 'jquery' in '/Users/kiyomasa/environment/sample_app/app/javascript/packs' @ ./app/javascript/packs/application.js 9:0-17 ERROR in ./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js Module not found: Error: Can't resolve 'jquery/src/jquery' in '/Users/kiyomasa/environment/sample_app/node_modules/@rails/ujs/lib/assets/compiled' @ ./node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js 1:0-28 @ ./app/javascript/packs/application.js

該当のコード

application.js

1 2require("@rails/ujs").start() 3require("turbolinks").start() 4require("@rails/activestorage").start() 5require("channels") 6require("jquery") 7import "bootstrap"

##調べてやってみたこと

そもそも原因が不明で、対象のコードを調べてもrequiereしか書いておらず、何かした記憶もない

app/javascript/packs/application.js

1require("@rails/ujs").start() 2require("turbolinks").start() 3require("@rails/activestorage").start() 4require("channels") 5require("jquery") 6// import "bootstrap" 7require('bootstrap/dist/js/bootstrap.min.js')

このコードをいろいろ調べてみるとwebpakerの問題かとも思い、上記のように少し変更したりしてみたが、うんともすんとも言わず。。

https://qiita.com/Furuta03/items/6d1ed07fbcd897a80e80
こちらのページも参考にしたが、どうやら違う模様

bootstrapの公式
https://getbootstrap.jp/docs/5.0/getting-started/webpack/
公式を参考に以下記述を試してみた

application.js

1require("@rails/ujs").start() 2require("turbolinks").start() 3require("@rails/activestorage").start() 4require("channels") 5require("jquery") 6import "bootstrap" 7// require('bootstrap/dist/js/bootstrap.min.js') 8 9#追加 10// You can specify which plugins you need 11import { Tooltip, Toast, Popover } from 'bootstrap'; 12import 'bootstrap/dist/css/bootstrap.min.css';

サーバーを再起動してもエラー内容は変わらなかった。

###環境
ローカル環境

rails -v Rails 6.0.3 ruby -v ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin19]

お知恵をいただけると幸いです。

##追記

この状態でherokuへデプロイしようとすると

ModuleNotFoundError: Module not found: Error: Can't resolve 'jquery' in '/tmp/build_24e51728/app/javascript/packs'

という記載があり、いろいろ調べてみたところ、webpackの問題かもしれません

と言ってもこのファイルがどこにあるかも見つからず、、

webpackについてはこちらで調べましたが、原因はわかりませんでした。

###追記2

フロント側のヘッダーのコードも調べましたが、問題ない感じでした

bootstrapとコードが違うのかと思い、bootstrap側の実装例も確認しましたが、相違ない模様でした。

イメージ説明

イメージ説明

検証側からリンクをクリックすると飛べますし、あくまでフロントでbootstrapが読み込めていないようです。

application.html.erb

1<!DOCTYPE html> 2<html> 3 <head> 4 <title><%= full_title(yield(:title)) %></title> 5 <%= render 'layouts/rails_default' %> 6 <%= render 'layouts/shim' %> 7 </head> 8 <body> 9 <%= render 'layouts/header' %> 10 <div class="container"> 11 <% flash.each do |message_type, message| %> 12 <%= content_tag(:div, message, class: "alert alert-#{message_type}") %> 13 <% end %> 14 <%= yield %> 15 <%= render 'layouts/footer' %> 16 <%= debug(params) if Rails.env.development? %> 17 </div> 18 </body> 19</html>

_rails_default.html.erb

1<%= csrf_meta_tags %> 2<%= csp_meta_tag %> 3<%= stylesheet_link_tag 'application', media: 'all', 4 'data-turbolinks-track': 'reload' %> 5<%= javascript_pack_tag 'application', 6 'data-turbolinks-track': 'reload' %>

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

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

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

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

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

guest

回答1

0

自己解決

結論、jQueryとBootstrapのJavaScriptライブラリを、アプリケーションにインストールできていませんでした。

$ yarn add jquery@3.4.1 bootstrap@3.4.1

を実行したらエラーが消え、ドロップダウンメニューが正常に動きました。

※rails チュートリアル8章 8.2.3

Bootstrapのドロップダウンメニュー機能をレウアウトに追加したものの、(dropdownクラスやdropdown-menuなど)ドロップダウン機能を有効にするため、JavaScriptライブラリ,jQueryを読み込めていませんでした。

上記のコマンドはyarnでJavaScriptをインクルードするためのコマンドです。

3日ぐらいかかりました。。。簡単な話、コマンドを実行せずよっみ飛ばしてしまっていただけでした。

すみません。

投稿2021/03/16 06:33

kiyomasa

総合スコア40

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問