Laravel 5.3 Passport - Vue 错误:评估表达式时出错
Posted
技术标签:
【中文标题】Laravel 5.3 Passport - Vue 错误:评估表达式时出错【英文标题】:Laravel 5.3 Passport - Vue error: Error when evaluating expression 【发布时间】:2017-01-11 22:10:47 【问题描述】:这两天让我头疼。我最近将我的 laravel 应用程序更新到 5.3,在我拉入 Laravel/passport 的本地环境中。安装后,一切正常。
当我将此更新推送到生产服务器时,一切仍然正常,但 vue 在护照组件上抛出错误。我对 vue 还是很陌生,找不到是什么原因造成的。
我尝试的最后一件事是在生产服务器上重新安装 Laravel 和护照,这会导致相同的错误。当我将此安装推送到本地计算机时,一切正常。我猜这是某种依赖错误。
这些是错误:
[Vue warn]: Error when evaluating expression "token.scopes.length > 0": TypeError: Cannot read property 'length' of undefined (found in component: <passport-authorized-clients>)
[Vue warn]: Error when evaluating expression "token.client.name": TypeError: Cannot read property 'name' of undefined (found in component: <passport-authorized-clients>)
[Vue warn]: Error when evaluating expression "token.scopes.length > 0": TypeError: Cannot read property 'length' of undefined (found in component: <passport-authorized-clients>)
[Vue warn]: Error when evaluating expression "token.client.name": TypeError: Cannot read property 'name' of undefined (found in component: <passport-authorized-clients>)
有没有人遇到过同样的错误,我该如何解决?
编辑:我设法解决了这个问题。我将 php5.6 更新为 php7 并安装了以下 PHP 模块; libgmp-dev,php-gmp。当我再次进行全新安装时,npm 抱怨护照需要两个依赖项; mdanter/ecc 和 indigophp/hash-compat
【问题讨论】:
这里需要更多代码,但似乎您正在尝试绑定一些不存在的值(至少在init
上)。您是否将令牌创建为空对象,然后再往下添加属性?您是否有任何元素试图在创建时访问此属性?
我刚刚想通了。 OAuth 服务器缺少一个 PHP 模块才能工作,我不知道为什么 composer require laravel/passport
没有给我任何错误。但是在我安装 PHP 模块之后,节点给了我另一个错误,它需要 mdanter/ecc and indigophp/hash-compat
才能正常工作。
在我看来,这似乎是一个客户端问题vuejs/vue-resource#317
【参考方案1】:
我也遇到了同样的问题。解决方案here 帮助了我。它建议将以下内容添加到resources/assets/js/bootstrap.js
:
Vue.http.interceptors.push((request, next ) =>
next((response) =>
if( 'Content-Type' in response.headers
&& response.headers['Content-Type'] == 'application/json' )
if( typeof response.data != 'object' )
response.data = JSON.parse( response.data );
if( 'content-type' in response.headers
&& response.headers['content-type'] == 'application/json' )
if( typeof response.data != 'object' )
response.data = JSON.parse( response.data );
);
);
【讨论】:
以上是关于Laravel 5.3 Passport - Vue 错误:评估表达式时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Laravel Passport (5.3) 记录身份验证尝试
Laravel 5.3 Passport API 在 Postman 中使用个人访问令牌未经身份验证