【问题标题】:Livewire 404: GET http://localhost/livewire/livewire.js net::ERR_ABORTED 404 (Not Found)Livewire 404:获取 http://localhost/livewire/livewire.js net::ERR_ABORTED 404(未找到)
【发布时间】:2020-12-29 17:03:07
【问题描述】:

我正在学习如何使用 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 未定义 在(索引):35

我正在关注官方文档和截屏视频,我尝试逐步按照所有说明进行操作,但它也不起作用。 也许我在安装的时候做错了什么,但我不这么认为,因为我只是打了:

作曲家需要 livewire/livewire

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

GitHub 仓库:learningLaravel

【问题讨论】:

  • 您的应用程序正在运行什么帖子?
  • 请您将代码复制并粘贴到您的问题中,而不是链接到它。
  • 抱歉,我不小心发布了一个不完整的问题。 “您的应用正在运行什么帖子?”是什么意思?
  • 好的,先生,我发布了。 @Rwd
  • 您使用的是哪个版本的 Livewire?

标签: php html laravel laravel-livewire


【解决方案1】:

你可以试试这个:

运行:php artisan livewire:publish

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

【讨论】:

【解决方案2】:

就我而言,wepe 评论的内容有效,只是我输入了'asset_url' =&gt; url('/') 而不是'asset_url' =&gt; url('/')

【讨论】:

  • 编辑:这在生产中不起作用,最好在开发模式下使用完整路径
  • 谢谢!也适用于 Laravel 8 :)
【解决方案3】:

虽然现在 Livewire 文档中将 Zenabus.dev 的答案列为最佳实践,但我认为这只是一种解决方法,并不清楚为什么需要这样做,所以我想我会详细说明一下描述 404 的常见原因是什么以及您还有哪些其他选择。

默认情况下,Livewire 为 livewire/livewire.js 注册一个路由,并要求对该 URL 的请求通过 Laravel 路由。 LivewireJavaScriptAssets 控制器然后将从供应商目录中提取文件并将其提供给用户。

如果在开发系统上一切正常并且像我一样停止在生产环境中工作,那么您的服务器/虚拟主机配置(Apache、Nginx、...)可能有一个针对 Javascript 文件的特殊处理集,这会干扰通过这个过程,将尝试直接从您的文档根目录提供这些文件,从而有效地绕过 Laravel。

请检查您的服务器配置并确保 www.yourapp.com/livewire/livewire.js 实际上是通过 Laravel 路由的(通过 public/index.php 文件)。

如果不是,您可以删除对 j​​s 文件的任何特殊处理,确保仅在文件实际存在时应用规则,或者如果您不能这样做,您可以按照@987654322 中的说明发布资产@。

作为一个侧节点,我个人不会像文档中描述的那样在 post-autoload-dump 上添加发布命令,而是在 post-update-cmd 上添加。我对在生产服务器上发布资产不满意,宁愿仅在需要时在开发系统上执行此操作,然后将公共文件推送到存储库。

【讨论】:

    【解决方案4】:

    让我们深入研究并找到解决方案 您的请求网址您可以从您的网络标签中查看

    GET http://localhost/livewire/livewire.js net::ERR_ABORTED

    1. 您的基本网址

    获取 http://localhost/

    应该是这样的

    GET http://localhost/your_project_directory

    1. 现在正确的网址

    GET http://localhost/your_project_directory/livewire/livewire.js

    GET http://localhost/your_project_directory/public/livewire/livewire.js

    解决方案:

    app/config/livewire.php

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

    同时更新 .env 文件中的 APP_URL

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

    【讨论】:

      【解决方案5】:

      我也经历过同样的挑战……请这样做以解决您的问题。 运行

      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;
      

      享受编码!

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

        • 这会获取 livewire.js 仍然丢失的资产,我有 livewire.js.map 文件
        【解决方案7】:

        打开这个文件confi\livewire.php,然后添加你的公共目录路径,替换这个'asset_url' => null,

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

        【讨论】:

        【解决方案8】:

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

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

        可以参考github上的这个链接:Problem loading Livewire.js

        【讨论】:

        【解决方案9】:

        我将 Xampp 与 PHP8 一起使用。我不得不修改 config/livewire.php 如下:

        'asset_url' => config('app.url').'/public',
        

        其中 config('app.url') 指的是:'url' =&gt; env('APP_URL', 'http://localhost'),在我的 config/app.php 文件中,内部指的是:APP_URL=http://localhost/laravel在我的 .env 文件中。

        【讨论】:

          【解决方案10】:

          在 config/livewire.php 文件中

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

          【讨论】:

            猜你喜欢
            • 2022-11-21
            • 2019-07-24
            • 1970-01-01
            • 1970-01-01
            • 2021-07-13
            • 2019-05-08
            • 2019-12-11
            • 2020-07-10
            • 1970-01-01
            相关资源
            最近更新 更多