【问题标题】:Spontaneous Server Errors During AngularJS $http callsAngularJS $http 调用期间的自发服务器错误
【发布时间】:2015-12-03 07:58:06
【问题描述】:

我正在用 Laravel (5.1) 后端服务的 AngularJS 构建一个 SPA。最近我遇到了一个恼人的错误,服务器 500 或代码 0 错误,这有点难以解释它是如何发生的,但让我尝试一下,也许有人会理解我的问题的牙科公式。

当我启动我的 AngularJS 控制器时,我进行了几次服务器调用(通过来自服务的独立 $http 调用)来检索我以后可能在控制器中需要的信息。例如,

Functions.getGrades()
.then(function(response)
{
    $scope.grades = response.data;
});

Subjects.offered()
.then(function(response)
{
    $scope.subjects = response.data;
});

稍后我将这些变量(gradessubjects)传递给用于处理它们的服务。但是,这些函数在运行后随机返回代码 500 服务器错误,有时在运行后返回状态代码 0。这是随机发生的,我很难指出导致它们突然出现的情况。这给我留下了频繁的空 Laravel 化错误屏幕,如下所示。

有人读懂我的心吗?

【问题讨论】:

  • 出现这样的错误起初并不是前端的问题。你检查过你的日志吗?您也可以打开调试模式以获取更多错误信息laravel.com/docs/5.1/errors
  • 调试模式设置为真,可能我需要看看我的日志。想知道加载几个独立的 $http 调用会产生这样的效果吗?因为当发生错误并且您刷新页面时,它通常会正常工作
  • $http 调用应该全部完成,彼此独立。所以“不,它应该没有效果”,除非你已经编写了一些依赖于另一个调用的副作用的东西。这就是你必须找出的。您的问题含糊不清,无法给出任何答案。
  • 是的,我也觉得这个问题含糊不清,我花了很长时间才知道我应该怎么问,但是您上面检查日志文件的建议正是我需要的答案,加上一些我在另一个问题中找到的其他提示,正如我的新答案所反映的那样。

标签: angularjs http laravel-5.1


【解决方案1】:

好的,在我检查我的 Laravel 日志文件(位于storage/logs/laravel.log- Laravel 5.1)的评论中给出的建议之后,我发现大多数时候的主要错误是这个:'PDOException' with message 'SQLSTATE[HY000] [1044] Access denied for user ''@'localhost' to database 'forge'' in ...,加上另一个解释类似No valid encrypter found的东西。这些是关键。

在阅读另一个 SO 线程 here 时,它部分表示:

我解决了,有时 laravel 没有读取 .ENV 中的 APP_KEY。并返回一个值“SomeRandomString”(默认在config/app.php中定义),并有错误“key length is invalid”,所以解决方法是将APP_KEY的值复制到config/中的值'key' app.php,就是这样!我解决了!

这正是问题所在!当从 .env 加载 DB 参数到 config/database.php 时,Laravel 有时无法读取环境变量并使用回退默认回退选项(forge 用于 DB 名称和用户名,SomeRandomString 用于 APP_KEY)。所以,为了解决这个问题,我按照建议做了:将.env 中的APP_KEY 复制到config/app.php,并将默认数据库参数编辑为我正在使用的实际数据库名称和用户名/密码。就这样,我没有污染。希望有人觉得这很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-01
    • 2014-03-24
    • 1970-01-01
    • 2016-09-15
    • 2018-01-28
    • 1970-01-01
    • 2012-07-06
    相关资源
    最近更新 更多