Livewire 404: ПОЛУЧИТЬ http: //localhost/livewire/livewire.js net :: ERR_ABORTED 404 (не найдено)

Я учусь использовать livewire и laravel, я пытался связать некоторые данные через ввод, я написал этот код:

home.blade.php:

<html>
<head>
    <title>Home</title>

    @livewireStyles
</head>
<body>
    @livewire("hello-world")

    @livewireScripts
</body>
</html>

привет-мир.blade.php:

<div>
    <input wire:model="nome" type="text">
    <br>
    Hello {{ $nome }}
</div>

HelloWorld.php:

<?php

namespace App\Http\Livewire;

use Livewire\Component;

class HelloWorld extends Component
{
    public $nome = 'Name';
    public function render()
    {
        return view('livewire.hello-world');
    }
}

Он работает на Apache 2.4. Но если я открываю консоль браузера при загрузке страницы, я получаю:

(индекс): 29 GET http: //localhost/livewire/livewire.js? id = c1db26b321e994f87254 net :: ERR_ABORTED 404 (не найдено)

(index): 35 Uncaught ReferenceError: Livewire не определен в (index): 35

Я слежу за официальными документами и скринкастами, я пытался пошагово следовать всем инструкциям, но это тоже не сработало. Может я что-то не так сделал при установке, но я так не думаю, потому что просто нажал:

композитору требуется livewire / livewire

так что все должно быть в порядке. Какие-нибудь подсказки?

Репозиторий GitHub: learningLaravel


person aleemont    schedule 11.09.2020    source источник
comment
какой пост у вас запущено приложение.?   -  person Kamlesh Paul    schedule 11.09.2020
comment
Можете ли вы скопировать и вставить код в свой вопрос, а не делать ссылку на него.   -  person Rwd    schedule 11.09.2020
comment
Извините, я случайно отправил неполный вопрос. Что вы имеете в виду под какой публикацией работает ваше приложение?   -  person aleemont    schedule 11.09.2020
comment
Хорошо, сэр, я разместил это. @Rwd   -  person aleemont    schedule 11.09.2020
comment
Какую версию Livewire вы используете?   -  person Rwd    schedule 11.09.2020
comment
Если вам это нужно, я могу сделать репо на gitHub, чтобы вы могли просмотреть все файлы проекта.   -  person aleemont    schedule 11.09.2020
comment
Я использую Livewire v. 2.1   -  person aleemont    schedule 11.09.2020
comment
С какого URL вы получаете доступ к своему проекту? http://localhost?   -  person Clément Baconnier    schedule 29.09.2020
comment
У меня такая же проблема, не могли бы вы рассказать мне, как решить эту проблему ...?   -  person Neeraj Tangariya    schedule 29.12.2020


Ответы (6)


Можете ли вы попробовать это:

запустить: php artisan livewire:publish

затем откройте config / livewire.php и измените 'asset_url' => null на 'asset_url' => 'http://localhost'

person wepe    schedule 02.11.2020

Хотя ответ Zenabus.dev указан в документации Livewire в качестве передового опыта, я чувствовал, что это всего лишь обходной путь и не проясняет, почему это необходимо, поэтому я подумал, что я немного подробнее остановлюсь на этом и опишу, что Распространенной причиной 404 может быть и какие еще варианты у вас есть.

По умолчанию Livewire регистрирует маршрут для livewire / livewire.js и требует, чтобы запрос этого URL проходил через маршрутизацию Laravel. Контроллер LivewireJavaScriptAssets затем извлечет файл из каталога поставщика и предоставит его пользователю.

Если все работает нормально в системе разработки и перестает работать в продакшене, как для меня, скорее всего, ваш сервер / конфигурация vhost (Apache, Nginx, ...) имеет специальный набор обработки для файлов Javascript, который будет мешать этому процессу. и будет пытаться обслуживать эти файлы прямо из корня вашего документа, эффективно минуя Laravel.

Проверьте конфигурацию своего сервера и убедитесь, что www.yourapp.com/livewire/livewire.js фактически маршрутизируется через Laravel (через файл public / index.php).

Если это не так, вы можете либо удалить любую специальную обработку файлов js, убедитесь, что правила применяются только в том случае, если файлы действительно существуют, или если вы не можете сделать то же самое, вы можете прибегнуть к публикации ресурсов, как описано в https://laravel-livewire.com/docs/2.x/installation#publish-assets.

В качестве побочного узла я лично не стал бы добавлять команду публикации в post-autoload-dump, как описано в документации, а скорее в post-update-cmd. Мне не нравится, что ресурсы публикуются на производственном сервере, и я предпочел бы делать это в системе разработки только при необходимости, а затем отправлять общедоступные файлы в репозиторий.

person Lupinity Labs    schedule 20.10.2020

В моем случае то, что мы прокомментировали, сработало, только вместо 'asset_url' => 'http://localhost' я поставил 'asset_url' => url('/')

person edu.dev    schedule 07.02.2021
comment
Изменить: это не работает в производстве, лучше использовать полный путь в режиме разработки - person edu.dev; 10.02.2021

Я тоже изучаю Laravel Livewire, и я тоже столкнулся с той же проблемой. Моя проблема была решена запуском

php artisan vendor:publish --force --tag=livewire:assets

Вы можете обратиться к этой ссылке на github: Проблема с загрузкой Livewire.js

person Zenabus.dev    schedule 07.10.2020

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

ПОЛУЧИТЬ http: //localhost/livewire/livewire.js net :: ERR_ABORTED

  1. ваш базовый URL

ПОЛУЧИТЬ http: // localhost /

это должно быть как

ПОЛУЧИТЬ http: // localhost / your_project_directory

  1. теперь правильный URL

ПОЛУЧИТЬ http: //localhost/your_project_directory/livewire/livewire.js

or

ПОЛУЧИТЬ http: //localhost/your_project_directory/public/livewire/livewire.js

Решение:

приложение / конфигурация / livewire.php

'asset_url' = ›env ('APP_URL', 'http: // localhost'),

также обновите APP_URL соответственно в файле .env

вам следует очистить кеш и конфигурацию, а затем попробуйте, надеюсь, это решит проблему

person shafeeque ahmad    schedule 16.02.2021

Следующая команда опубликует ресурсы в вашей папке public и должна решить проблему 404.

php artisan vendor:publish --force --tag=livewire:assets

Директива лезвия @livewireScripts по-прежнему требуется, но она автоматически правильно извлекает ресурсы из /public/vendor/livewire/livewire.js

person Phmarc    schedule 17.04.2021
comment
Это извлекает актив, livewire.js все еще отсутствует, вместо этого у меня есть файл livewire.js.map - person jeesoon; 26.04.2021