2016-09-04 5 views
0

Это дает мне головную боль в течение последних двух дней. Недавно я обновил свое приложение laravel до 5.3, в своей местной среде я потянул в Laravel/паспорт. После установки все работает так, как ожидалось.Laravel 5.3 Паспорт - ошибка Vue: ошибка при оценке выражения

Когда я нажимаю это обновление на производственный сервер, все по-прежнему работает, но 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>) 

Кто-нибудь сталкивался с такой же ошибки, и как я могу это исправить?

EDIT: Мне удалось это исправить. Я обновил php5.6 до php7 и установил следующие модули PHP; libgmp-dev, php-gmp. Когда я снова сделал новую установку, npm жаловался на два варианта, которые требуется для паспорта; mdanter/ecc и indigophp/hash-compat

+0

нужно еще немного кода здесь, но кажется, что вы пытаетесь связать некоторые значения, которые не существуют (на 'init', по крайней мере). Вы создаете токен как пустой объект, а затем, далее, добавляете свойства? У вас есть элемент, который пытается получить доступ к этим свойствам при создании? –

+0

Я только что понял. Для работы сервера OAuth не было модуля PHP, я не знаю, почему «композитор требует laravel/passport» не дал мне никаких ошибок. Но после того, как я установил модуль PHP, узел дал мне еще одну ошибку, чтобы она корректно функционировала для 'mdanter/ecc и indigophp/hash-compat'. –

+0

Как я вижу, это проблема клиента [vuejs/vue-resource # 317] (https://github.com/vuejs/vue-resource/issues/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); 
      } 
     } 
    }); 
}); 
Смежные вопросы