Laravelで掲示板アプリを開発しており、以下の方法でログイン機能を追加しました。
/(ルート)のページとして以下のファイル(main.blade.php
)を作成しておりました。
resources/views/main.blade.php
<!DOCTYPE html> <html lang="ja"> <head> 〜省略〜 </head> <body> <div class="container"> 〜省略〜 </div> <script src="{{ asset('js/main.js') }}"></script> </body> </html>
public/js/main.js
'use strict'; const formWrap = document.querySelector('.formWrap'); const letsNew = document.getElementById('letsNew'); //クリックイベントでクラスの付け替えをしています letsNew.addEventListener('click', ()=>{ if(formWrap.classList.contains('closed')){ formWrap.classList.remove('closed'); formWrap.classList.add('opened'); }else if(formWrap.classList.contains('opened')){ formWrap.classList.remove('opened'); formWrap.classList.add('closed'); }; });
その後、以下のようにLogin機能の実装により自動生成されたapp.blade.php
へscriptタグを追記し、javascriptを読み込もうとしたところ、javascriptのクリックイベントが動作しなくなってしまいました。。。
resources/views/main.blade.php(修正後)
@extends('layouts.app') @section('content') <div class="container"> 〜省略〜 </div> @endsection
resources/views/layouts/app.blade.php
<!doctype html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> 〜省略〜 </head> <body> <div id="app"> 〜省略〜 <main class="py-4"> @yield('content') </main> </div> <!-- FIXME JSが動かない --> <script src="{{ asset('js/main.js') }}"></script> </body> </html>
main.blade.php
だけでjavascriptを読み込んでいたときはクリックイベントが動いていたのですが、app.blade.php
から読み込むと動かない状況です。
また、chromeのコンソールには以下のワーニングが表示されています。
DevTools failed to load SourceMap: Could not load content for http://localhost/js/popper.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
なお、main.js
ファイルにconsole.log('hello');
と記載してみると、コンソールには
hello DevTools failed to load SourceMap: Could not load content for http://localhost/js/popper.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
と表示されるので、main.js
ファイル自体は読み込めているものと推測しているのですが、なぜイベントリスナーが動作しないのか分からずにおります。
app.blade.php
でjavascriptを読み込むときには、何かしら設定の変更などが必要なのでしょうか。
どうかアドバイスのほど、よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー