Livewire 404: GET http://localhost/livewire/livewire.js net:



我正在学习如何使用livewire和laravel,我试图通过输入绑定一些数据我写了这个代码:

home.blade.hp:

<html>
<head>
<title>Home</title>
@livewireStyles
</head>
<body>
@livewire("hello-world")
@livewireScripts
</body>
</html>

hello-world.blade.php:

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

HelloWorld.php:

<?php
namespace AppHttpLivewire;
use LivewireComponent;
class HelloWorld extends Component
{
public $nome = 'Name';
public function render()
{
return view('livewire.hello-world');
}
}

它在Apache 2.4上运行但如果我在加载页面时打开浏览器控制台,我会得到:

(索引):29 GEThttp://localhost/livewire/livewire.js?id=c1db26b321e994f87254net::ERR_ABORTED 404(未找到)

(索引):35未捕获引用错误:未定义Livewire在(索引):35

我正在遵循官方文档和屏幕截图,我试图一步一步地遵循所有说明,但也不起作用。也许我在安装过程中做错了什么,但我不这么认为,因为我只是点击了:

作曲家需要livewire/livewire

所以应该没问题。有线索吗?

GitHub回购:学习Laravel

你可以试试这个吗:

运行:php artisan livewire:publish

然后打开config/livewire.php'asset_url' => null更改为'asset_url' => 'http://localhost'

我也经历了同样的挑战。。。请这样做来帮你解决问题。运行

php artisan livewire:publish

打开config/livewire.php编辑行

'asset_url'=>空

,读取

'asset_url'=>'http://localhost/your_project/public/',

运行artisan命令以清除缓存,然后进行测试。如果您使用的是Linux,您可以从这里进行复制。

php artisan cache:clear;php artisan config:clear;php artisan route:clear;php artisan view:clear;

享受编码!

让我们深入了解并找到解决方案您的请求url您可以从网络选项卡中进行检查

GEThttp://localhost/livewire/livewire.jsnet::ERR_ABORTED

  1. 您的基本url

GEThttp://localhost/

它应该是

GEThttp://localhost/your_project_directory

  1. 现在更正url

GEThttp://localhost/your_project_directory/livewire/livewire.js

GEThttp://localhost/your_project_directory/public/livewire/livewire.js

解决方案:

app/config/livewire.php

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

还相应地更新.env文件中的APP_URL

您应该清除缓存配置,然后尝试。我希望这将解决问题

虽然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-资产。

作为一个侧节点,我个人不会像文档中描述的那样在自动加载后转储中添加publish命令,而是在更新后cmd中添加。我对在生产服务器上发布资产感到不舒服,宁愿只在需要时在开发系统上发布,然后将公共文件推送到存储库。

在我的情况下,我们评论的内容有效,只是我放了'asset_url' => url('/')而不是'asset_url' => 'http://localhost'

对于遇到同样错误的其他人,以上没有任何帮助。

在我的例子中,我有一个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

下面的命令将把资产发布到public文件夹,应该可以解决404问题。

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

@livewireScripts刀片指令仍然是必需的,但它会自动正确地从/public/vendor/livewire/livewire.js中提取资产

打开此File confi\livewire.php,然后添加您的公共目录路径,替换此"asset_url"=>空,

"asset_url"=>https://www.yourporject.com/public,

php artisan livewire:publish不会抛出错误,如果当前用户没有复制文件的权限。

因此,即使在livewire发布命令说它已经创建了公共/供应商/livewire文件夹之后,该文件夹也不见了。

  1. 修复我的权限和
  2. 重新运行php artisan livewire:publish

帮了我一把。

我也在学习Laravel Livewire,我也遇到了同样的问题。运行解决了我的问题

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

您可以参考github上的链接:加载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文件中,内部指的是我的.env中的:APP_URL=http://localhost/laravel

在config/livewire.php文件中

'asset_url' => url('/'),

最新更新