2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

LaravelでJavascriptが読み込めない時に解決した方法

Last updated at Posted at 2021-03-11

概要

LaravelでJavascript使ってみようとした時に詰まったので備忘録として記載します。
もしJSファイルにコードを記載しても反応しない場合に試していただければと思います。

前提

・Laravel-mix使用(LaravelではLaravel-mixを使って動作させるのが基本と教わった)

・jsファイルが二箇所あるので注意
app/public/js
app/resources/js
→読み込むのはapp/public/jsの方になる
→ソースはresourcesに配置し、laravel-mixを通してpublicに出力させるように管理するとよい

・注意
viewファイルに直接scriptタグでは書かない
app/public/jsのファイルに直接コードを書き込まない

大まかな手順

①resources/js/配下にjsファイルを作る(ファイル名は何でもいいが、例ではmemo.jsにする)
②webpack.mix.jsに「resources/js/memo.js」を「public/js」へコピーする記述を追記する
③ターミナルで$ npm run devとコマンドをたたく
④viewのヘッダーにjsを読み込む記述をする

①jsファイル作成

resources/js/配下にjsファイルを作る
(今回は例としてボタンをクリックしたらアラートが出るような記述をします)

memo.js

function btnChk(){
    alert("処理中です");
};
window.buttonClick = buttonClick;

②webpack.mix.jsを編集

mixの部分に下記の記述を足す
.copy('resources/js/memo.js', 'public/js')

webpack.mix.js
const mix = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel application. By default, we are compiling the Sass
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js('resources/js/app.js', 'public/js')
   .copy('resources/js/memo.js', 'public/js')
   .sass('resources/sass/app.scss', 'public/css');

③npm実行

実行することで「resources/js/memo.js」が「public/js」配下にコピーされる

$ npm run dev

④viewのヘッダーにjsを読み込む記述をする

ヘッダー部分に下記の記述を追記する。
<script src="{{ mix('js/memo.js') }}" defer></script>

layout.blade.php
<!doctype html>
<html lang="ja">
  <head>

       === 中略 ===

    <!-- Scripts -->
    <script src="{{ mix('js/memo.js') }}" defer></script>

  </head>

  <body>
    <input type="button" value="button" onclick="btnChk()">
  </body>

確認

実際にボタンをクリックしてみて機能していればOK

以上となります。
自分はネットの先輩方に教えていただきながらこれで解決しました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?