[英]Livewire 404: GET http://localhost/livewire/livewire.js net::ERR_ABORTED 404 (Not Found)
我正在學習如何使用 livewire 和 laravel,我試圖通過輸入綁定一些數據,我編寫了這段代碼:
home.blade.php:
<html>
<head>
<title>Home</title>
@livewireStyles
</head>
<body>
@livewire("hello-world")
@livewireScripts
</body>
</html>
你好-world.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 is not defined at (index):35
我正在關注官方文檔和截屏視頻,我嘗試逐步按照所有說明進行操作,但它也不起作用。 也許我在安裝過程中做錯了什么,但我不這么認為,因為我剛剛打了:
作曲家需要 livewire/livewire
所以應該沒問題。 有什么線索嗎?
GitHub 倉庫: learningLaravel
你可以試試這個:
運行: php artisan livewire:publish
然后打開config/livewire.php將'asset_url' => null
更改為'asset_url' => 'http://localhost'
深入研究並找到解決方案您的請求網址,您可以從您的網絡選項卡中查看
獲取 http://localhost/livewire/livewire.js 網絡::ERR_ABORTED
獲取 http://localhost/
它應該是
獲取 http://localhost/your_project_directory
獲取 http://localhost/your_project_directory/livewire/livewire.js
或者
獲取 http://localhost/your_project_directory/public/livewire/livewire.js
解決方案:
應用程序/配置/livewire.php
'asset_url' => env('APP_URL', 'http://localhost'),
也在 .env 文件中相應地更新 APP_URL
您應該清除緩存和配置然后嘗試我希望這將解決問題
雖然 Zenabus.dev 的答案現在在 Livewire 文檔中列為最佳實踐,但我認為這只是一種解決方法,並不清楚為什么需要這樣做,所以我想我會詳細說明一下並描述一下404 的常見原因可能是您有哪些其他選擇。
默認情況下,Livewire 為 livewire/livewire.js 注冊一個路由,並要求對該 URL 的請求通過 Laravel 路由。 LivewireJavaScriptAssets 控制器然后將從供應商目錄中提取文件並將其提供給用戶。
如果在開發系統上一切正常並且像我一樣停止在生產中工作,那么您的服務器/虛擬主機配置(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 上添加。 我對在生產服務器上發布的資產不滿意,寧願只在需要時在開發系統上執行此操作,然后將公共文件推送到存儲庫。
就我而言,wepe 評論的內容有效,只是我輸入了'asset_url' => url('/')
而不是'asset_url' => 'http://localhost'
我正在經歷同樣的挑戰......請這樣做來解決你的問題。 跑
php artisan livewire:publish
打開config/livewire.php編輯行
'asset_url' => 空
, 讀書
'asset_url' => 'http://localhost/your_project/public/',
運行工匠命令以清除緩存,然后進行測試。 如果您使用的是 Linux,則可以從此處復制。
php artisan cache:clear;php artisan config:clear;php artisan route:clear;php artisan view:clear;
享受編碼!
以下命令會將資產發布到您的public
,並應解決 404 問題。
php artisan vendor:publish --force --tag=livewire:assets
@livewireScripts
刀片指令仍然是必需的,但它會自動正確地從/public/vendor/livewire/livewire.js
獲取資產
對於遇到同樣錯誤但以上沒有任何幫助的其他人。
在我的例子中,我有一個 nginx 服務器,它被設置為緩存和傳遞靜態文件,如 .css 和 .js,每當我嘗試訪問具有 .js 的路由時,nginx 都會嘗試查找文件是否存在,如果不存在,提供 404 錯誤代碼並阻止 laravel 做他的事情。
nginx 設置是這樣的:
location ~* \.(?:css|js)$ {
10 expires 1M;
11 access_log off;
12 add_header Cache-Control "public";
13 }
我刪除了|js
。
打開這個文件confi\livewire.php,然后添加你的公共目錄路徑,替換這個'asset_url' => null,
至
'asset_url' => https://www.yourporject.com/public ,
嘗試做
php artisan optimize:clear
;)
如果當前用戶無權復制文件,則php artisan livewire:publish
不會引發錯誤。
因此,即使在 livewire 發布命令說它已經創建它之后, public/vendor/livewire 文件夾也丟失了。
php artisan livewire:publish
為我做了伎倆。
我也在學習 Laravel Livewire,我也遇到了同樣的問題。 我的問題通過運行解決了
php artisan vendor:publish --force --tag=livewire:assets
可以參考github上的這個鏈接: Problem loading Livewire.js
我正在將 Xampp 與 PHP8 一起使用。 我必須修改config/livewire.php ,如下所示:
'asset_url' => config('app.url').'/public',
其中config('app.url')指的是: 'url' => env('APP_URL', 'http://localhost')
,在我的config/app.php文件中,內部指的是: APP_URL=http://localhost/laravel
在我的.env文件中。
在 config/livewire.php 文件中
'asset_url' => url('/'),
php artisan livewire:publish --config
APP_URL= http://localhost/mi_proyecto/public
por ejemplo: APP_URL= http://localhost/mi_proyecto/public
config/livewire.php
/livewire.php busca en la parte donde está la ruta de los assets 'asset_url' => null,
cambialo por esto: 'asset_url' => env('APP_URL', '/public'),
si utilizas url('/')
te puede funcionar pero al momento de ejecutar algun comando con php artisan
puede generic conflictos.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.