Нужна помощь в получении файлов JS, чтобы найти JQuery с помощью Laravel 5.7 с Laravel Mix - PullRequest
0 голосов
/ 24 октября 2018

Я загружаю JQuery глобально внутри файла resources / bootstrap.js следующим образом.

window.$ = window.jQuery = require('jquery');

У меня также есть небольшой скрипт для проверки, загружен ли JQuery, и я подтвердил, что он был загружен.

window.onload = function () {
  if (window.jQuery) {
      // jQuery is loaded
      alert("Yeah!");
  } else {
      // jQuery is not loaded
      alert("Doesn't Work");
  }

}

Однако у меня есть файл javascript внутри представления, зависящего от Jquery.

@section('footer')
    <script src="foo.js"></script>
@endsection 

После запуска npm run dev откройте инструменты разработчика Chrome и просмотрите сообщения консоли дляВ моем приложении я вижу следующую строку

Uncaught ReferenceError: jQuery is not defined at foo.js:100 

, указывающую, что foo.js не может найти JQuery.Я хотел бы сохранить загрузку JQuery глобально и дать возможность другим файлам ссылаться на JQuery.

Любая помощь с этим будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я нашел проблему.Это здесь.

<script src="{{ asset('js/app.js') }}" defer></script>

Библиотека JQuery загружается внутри app.js.Однако defer указывает, что содержимое тега сценария не должно выполняться, пока страница не загрузится.Поэтому мои пользовательские js-файлы не могут найти Jquery, потому что он еще не загружен.

Избавление от defer и размещение моих пользовательских сценариев под ним позволит сценариям находить и ссылаться на JQuery.

0 голосов
/ 24 октября 2018

Проверьте ваш webpack.mix.js в корневой папке laravel и убедитесь, что вы определили jquery для автозагрузки

mix.autoload({
    jquery: ['$', 'window.jQuery', 'jQuery'],
 });

после в вашем файле bootstrap.js, проверьте, присутствует ли он в этой части кода

try {
    window.$ = window.jQuery = require('jquery');

    require('bootstrap');
} catch (e) {}

затем вам нужно выполнить эту команду в командной строке для компиляции js и перевести laravel в режим разработчика

npm run dev

для последней сборкиконечно, вы включаете jquery-коды после вызова app.js в вашем основном макете (очень важно)

У меня была та же проблема, с которой вы столкнулись, и она мне помогла.Для получения дополнительной информации я предлагаю вам проверить эту страницу https://laravel.com/docs/5.7/mix

...