Laravel 5.3 Passport - Vue error: Error when evaluating expression

Laravel 5.3 Passport - Vue error: Error when evaluating expression

这两天让我很头疼。我最近将我的 laravel 应用程序更新到 5.3,在我引入 Laravel/passport 的本地环境中。安装后,一切正常。

当我将此更新推送到生产服务器时,一切仍然有效,但 vue 在护照组件上抛出错误。我对 vue 还是很陌生,我找不到造成这种情况的原因。

我尝试的最后一件事是在生产服务器上重新安装 Laravel 和 passport,这导致了同样的错误。当我将此安装推送到我的本地计算机时,一切正常。我猜这是某种依赖性错误。

这些是错误:

[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 抱怨 passport 需要两个依赖项; mdanter/ecc 和 indigophp/hash-compat

我遇到了同样的问题。解决方案 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 );
            }
        }
    });
});