【问题标题】:Laravel "Echo is not defined" when not run on server from command "php artisan serve"未通过命令“php artisan serve”在服务器上运行时,Laravel“未定义回声”
【发布时间】:2018-02-10 16:03:21
【问题描述】:

我的 laravel 应用程序现在在 Apache 上运行, 我通过从 laravel 项目文件夹中复制“公共”文件夹并粘贴到 apache 根文件夹中的 htdocs 来部署它。

一切正常。

我正在按照https://laravel.com/docs/5.5/broadcasting#installing-laravel-echo 实现 Echo

在通过命令进行服务测试时没有错误并且可以正常工作

php artisan serve

(在端口 8000 上)

但是当我从端口 80 访问文件时,它会在浏览器的控制台上显示此错误 (我没有改变任何东西)

Uncaught ReferenceError: Echo is not defined

这是包含的错误文件。

<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>Clean Gem Service</title>

    <!-- Styles -->
    <link href="{{ asset('css/app.css') }}" rel="stylesheet">
    <script src="{{ asset('js/jquery.js') }}"></script>    

</head>
<body>

<div id="app-notification"></div>

<script src="{{ asset('js/app.js') }}"></script>
<script>
    Echo.private('NewOrderChannel')
        .listen('NewOrderEvent', (e) => {
            console.log(e);
    });
</script>
</body>
</html>

这是怎么发生的? 我是否以错误的方式部署了我的应用程序?以及如何解决它

谢谢。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您是否提供了 Echo?

    “安装 Echo 后,您就可以在应用程序的 JavaScript 中创建一个新的 Echo 实例了。执行此操作的好地方是资源/资产/js/bootstrap.js 文件的底部,该文件包含在Laravel 框架”

    (https://laravel.com/docs/5.5/broadcasting#installing-laravel-echo)

    如果是这样,看来您需要使用window.Echo

    【讨论】:

    • 如果是因为这个,为什么当我从命令 'php artisan serve' 在服务器上运行时它会起作用?
    • 因为它是为简单的原型设计而设计的不同环境,可能涉及其他配置中不存在的自动加载?启动它并转到 Chrome 中的控制台。键入 Echo 并查看它返回的内容。键入 window.Echo 并查看它返回的内容。 - import Echo from "laravel-echo" - 位似乎对于实际设置很重要。
    • 我试过了,在控制台上输入“window.Echo”显示“未定义”在端口 80 但在端口 8000 上打开的页面上,“Echo”和“window.Echo”都可以正常工作。
    • 尝试修改 bootstrap.js ... 我怀疑 artisan serve 启动的开发服务器中正在加载额外的东西
    • 还有一件事,当我从上面的文件中删除 &lt;meta name="csrf-token" content="{{ csrf_token() }}"&gt; 时,端口 8000 上的浏览​​器控制台显示错误“找不到 CSRF 令牌”,但端口 80 上没有显示任何相关信息。跨度>
    猜你喜欢
    • 2021-12-23
    • 2015-04-03
    • 2020-01-09
    • 2019-08-12
    • 1970-01-01
    • 2018-01-10
    • 2017-04-15
    • 1970-01-01
    • 2016-04-05
    相关资源
    最近更新 更多