#laravel
#laravel
Вопрос:
Я использую Laravel 8.x в Windows 10 вместе с Vue 2.6.12. Я работаю над видео по объединению Vue с Laravel. Видео предназначено для более старой версии Laravel, вероятно, 5.5, и, вероятно, немного более старой Vue, так что это вполне может быть причиной моей проблемы. Вот ссылка на видео. Я примерно на отметке в 8:00 минут.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь выполнить свой код, Laravel не видит app.js файл независимо от того, сколько я экспериментирую с параметром src тега script. (У меня хорошее воображение, и я МНОГО экспериментировал.) Руководство Laravel здесь не очень помогло, за исключением того, что я видел, что в нем упоминается параметр ASSET_URL для файла .env, поэтому я попытался указать там начальную часть пути, но ничего из того, что я пробовал, не работает; Я неизбежно получаю ошибку 404. (Как бы то ни было, я попытался удалить asset() и просто закодировать путь традиционным способом, но это тоже не работает.)
Мой app.js файл находится по адресу /resources/assets/js/app.js . Файл, содержащий тег script, layout.blade.php , находится в /resources/views/layout.blade.php . Код в теге script гласит:
<script src=" asset('js/app.js')"></script>
точно так же, как видео. В файле .env ASSET_URL=’/resources/assets/’ . Что мне нужно изменить, чтобы это работало? Я не могу придумать ничего другого, чтобы попробовать!
Комментарии:
1. примерно в 4:30-5:00 в видео описывается, как установить и собрать ваш JS. это работает правильно? Также он использует
{{ asset'/js/app.js') }}
, что вы пропустили{{ }}
2. @apokryfos — Да, я выполнил команду npm install и npm run watch, но я запустил их снова, просто для уверенности. Я также вернул {{ }} обратно в параметр src — они были там для многих различных вариантов, которые я пробовал ранее, — но Laravel по-прежнему не видит файл.
3. если
npm run watch
он был успешно завершен, он не вернется, но продолжит работать в фоновом режиме и создавать ваш JS каждый раз, когда вы вносите изменения. Возможность повторного запуска указывает на то, что он мог работать неправильно
Ответ №1:
Вам нужно использовать скомпилированную версию файла /resources/assets/js/app.js
.
npm run dev or npm run watch
для компиляции активов, которые создадут соответствующие app.js файл в /public/js/app.js
папке
Используйте это в своем теге script
<script src="{{ asset('js/app.js') }}"></script>
Комментарии:
1. Я восстановил {{ }}, но я все еще получаю ошибку 404. (Я использовал фигурные скобки в большинстве своих попыток заставить это работать, но затем я решил попробовать это без фигурных скобок или функции asset (), а затем я забыл вернуть их обратно при составлении моего вопроса.
2. У вас есть
/public/js/app.js
проверка файлов? Опубликуйте кодwebpack.mix.js
Ответ №2:
вы пишете код, /resources/assets/js/app.js
а затем запускаете npm run dev
для его создания файл, который будет сгенерирован в public/js/app.js
этом активе, который вам нужно включить в свой файл блейда, например
в /resources/views/layout.blade.php
<script src="{{ asset('js/app.js') }}"></script> // make sure use {{ }} as asset() is helper function it need to run
здесь asset()
укажите на public
dir, чтобы asset('js/app.js'
это означало dir public/js/app.js
ссылка на ссылку https://laravel.com/docs/8.x/helpers#method-asset
Комментарии:
1. Да, я все это сделал — я восстановил {{ }} сейчас, но раньше широко использовал их во время своих экспериментов — но я все равно получаю 404. Я не знаю, что еще попробовать. Если я нигде не указываю ASSET_URL, каково его значение по умолчанию?
Ответ №3:
Хорошо, я исправил ошибку 404, но теперь у меня новая проблема. Я задам новый вопрос об этом. Во-первых, позвольте мне объяснить, как я исправил ошибку 404 для app.js .
- Я удалил ASSET_URL из .env, поскольку парень в видео этого не сделал.
- Я более точно имитировал то, что делало видео. Я помещал тег script в layout.blade.php файл, но я отказался от этого и создал welcome.blade.php это было идентично тому, что было на видео.
Я не совсем уверен, почему мой первоначальный подход не сработал, но Laravel успешно извлекает app.js файл сейчас же.
Если у кого-нибудь есть какие-либо идеи, зачем помещать тег script в файл макета, который затем вставляется в welcome.blade.php если это не сработает, мне было бы интересно услышать от вас.
Спасибо всем, кто пытался помочь!