簡體   English   中英

Livewire 404:獲取 http://localhost/livewire/livewire.js net::ERR_ABORTED 404(未找到)

[英]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

  1. 你的基本網址

獲取 http://localhost/

它應該是

獲取 http://localhost/your_project_directory

  1. 現在正確的網址

獲取 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 文件)。

如果不是,您可以刪除對 j​​s 文件的任何特殊處理,確保僅在文件實際存在時應用規則,或者如果您不能這樣做,您可以按照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 文件夾也丟失了。

  1. 修復我的權限和
  2. 重新運行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('/'),
  1. Ejecuta este comando para publicar la configuración de livewire php artisan livewire:publish --config
  2. En tu archivo .env verifica que la ruta de sea la APP_URL= http://localhost/mi_proyecto/public por ejemplo: APP_URL= http://localhost/mi_proyecto/public
  3. 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM