我正在学习如何使用livewire和laravel,我试图通过输入绑定一些数据 我写了这段代码:
home.blade.php:
<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 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获取http://localhost/livewire/livewire.js?id = c1db26b321e994f87254 net :: ERR_ABORTED 404(未找到)
(索引):35未捕获的参考错误:未定义Livewire 在(index):35
我正在关注官方文档和屏幕录像,我试图按照所有说明逐步进行操作,但是它也不起作用。 也许我在安装过程中做错了什么,但我不这么认为,因为我只是点击了:
作曲家需要livewire / livewire
所以应该没问题。 有任何线索吗?
GitHub存储库:learningLaravel
答案 0 :(得分:2)
就我而言,wepe 评论的内容起作用了,只是我把 'asset_url' => 'http://localhost'
放在了 'asset_url' => url('/')
答案 1 :(得分:1)
虽然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文件的任何特殊处理,确保仅在文件实际存在时才应用规则,或者如果您不能这样做,则可以按照{{ 3}}。
作为副节点,我个人不会按照文档中的描述在post-autoload-dump上添加publish命令,而是在post-update-cmd上添加。我对在生产服务器上发布的资产感到不满意,宁愿仅在需要时才在开发系统上这样做,然后将公共文件推送到存储库中。
答案 2 :(得分:1)
可以尝试一下:
运行:php artisan livewire:publish
然后打开 config / livewire.php
将'asset_url' => null
更改为'asset_url' => 'http://localhost'
答案 3 :(得分:1)
我正在经历同样的挑战......请这样做来解决你的问题。 运行
php artisan livewire:publish
打开 config/livewire.php 编辑行
<块引用>'asset_url' => null
,阅读
<块引用>'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;
享受编码!
答案 4 :(得分:0)
答案 5 :(得分:0)
深入研究并找到解决方案 您的请求网址您可以从您的网络标签中查看
<块引用>获取 http://localhost/livewire/livewire.js net::ERR_ABORTED
获取 http://localhost/
应该是这样
<块引用>GET http://localhost/your_project_directory
获取 http://localhost/your_project_directory/livewire/livewire.js
或
<块引用>获取 http://localhost/your_project_directory/public/livewire/livewire.js
解决方案:
app/config/livewire.php
<块引用>'asset_url' => env('APP_URL', 'http://localhost'),
也在 .env 文件中相应地更新 APP_URL
您应该清除缓存和配置 然后尝试我希望这会解决问题
答案 6 :(得分:0)
以下命令会将资产发布到您的 public
文件夹,并且应该可以解决 404 问题。
php artisan vendor:publish --force --tag=livewire:assets
@livewireScripts
刀片指令仍然是必需的,但它会自动正确地从 /public/vendor/livewire/livewire.js
获取资产
答案 7 :(得分:0)
我在 PHP8 中使用 Xampp。我不得不修改 config/livewire.php 如下:
'asset_url' => config('app.url').'/public',
其中 config('app.url') 指的是:'url' => env('APP_URL', 'http://localhost')
,在我的 config/app.php 文件中,内部指的是:{ {1}} 在我的 .env 文件中。
答案 8 :(得分:0)
打开这个文件confi\livewire.php,然后添加你的公共目录路径,替换这个'asset_url' => null,
到
'asset_url' => https://www.yourporject.com/public,