Неожиданный токен <в JSON в позиции 0 vuejs

Я искал, как решить эту ошибку, но не очень хорошо понимал, как ее исправить.

Я работаю с Lottie-Web над проектом, и мне нужно установить параметры анимации для объекта, чтобы передать его в качестве параметра позже.

Мой компонент:

import Lottie from './../../node_modules/lottie-web/build/player/lottie';

export default {
  name: 'Illustration',
  mounted() {
    this.animationParams = {
      container: document.getElementById('animation'),
      renderer: 'svg',
      loop: 'true',
      autoplay: 'false',
      path: '/src/data/animation.json',
    };
    Lottie.loadAnimation(this.animationParams);
  },
  data() {
    return {
      animationParams: {
      },
    };
  },

но когда эта строка выполняется:

    Lottie.loadAnimation(this.animationParams);

я получаю эту ошибку:

Uncaught SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at XMLHttpRequest.xhr.onreadystatechange

то, что я видел в других ответах здесь, в Stackoverflow, заключается в том, что мне не нужно анализировать json, поскольку он уже проанализирован, но я не знаю, как НЕ анализировать его.

вот что находится внутри json файла: http://myjson.com/s0kn6.

как мне загрузить этот файл json без его анализа?

Взгляните на вкладку сети в инструментах разработчика вашего браузера. Вероятно, вы получите не json, а html.

Roland Starke 07.05.2018 17:39

ну я проверил, и это не тот случай: /

Carlos Pisarello 07.05.2018 17:46

@CarlosPisarello Возможно, что указанный путь (/src/data/animation.json) не найден на вашем сервере, который может быть настроен для перенаправления на страницу 404 (т.е. HTML), которая не может быть проанализирована как JSON. Я бы дважды проверил соответствующий сетевой ответ для этого пути в DevTools.

tony19 07.05.2018 18:18

Можно ли поделиться снимком экрана своего сетевого вызова из инструментов разработчика Chrome, а также ответом на этот сетевой вызов? То, что прокомментировал @ tony19, сейчас имеет смысл.

highhope 07.05.2018 18:24

Конечно! @highhope вот он: ibb.co/drGVM7 файл Cuentas.json (в сообщении я изменил его на animation.json, чтобы лучше понять проблему)

Carlos Pisarello 07.05.2018 18:30

Покажи и ответ, пожалуйста.

highhope 07.05.2018 18:31

ооооо, поехали: ibb.co/iJF1Tn

Carlos Pisarello 07.05.2018 18:34

Теперь я понял, я просто не понимаю, что сейчас происходит.

Carlos Pisarello 07.05.2018 18:35

это явно не данные внутри файла JSON, который я вызываю

Carlos Pisarello 07.05.2018 18:35

Ага, значит, @ tony19 был прав. И посмотрите, поможет ли этот пост, stackoverflow.com/questions/2603595/…

highhope 07.05.2018 18:37

Я, наконец, смог получить данные json, я искал структуры других проектов, и что я сделал, так это переместил папку данных в путь / static / и больше не имел ее на пути / src /.

Carlos Pisarello 07.05.2018 18:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
11
4 805
1

Ответы 1

Маловероятно, что ваш сервер обслуживает /src/data/animation.json. Вместо использования path используйте animationData и просто установите объект анимации напрямую (вместо вызова сервера).

Во-первых, я бы просто установил данные анимации в обычный модуль ES6, который экспортирует объект вместо json.

/src/data/animation.js

export default {
  // your animation data
}

Обратите внимание, что это файл javascript, а не файл json. Затем в своем компоненте просто импортируйте объект.

import Lottie from './../../node_modules/lottie-web/build/player/lottie';
import animationData from "/src/data/animation"

export default {
  name: 'Illustration',
  mounted() {
    this.animationParams = {
      container: document.getElementById('animation'),
      renderer: 'svg',
      loop: 'true',
      autoplay: 'false',
      animationData,
    };
    Lottie.loadAnimation(this.animationParams);
  },
  data() {
    return {
      animationParams: {
      },
    };
  },

Это задокументировано здесь.

Это увеличит ваш исходный пакет, но вам не придется дополнительно обращаться к серверу для получения данных анимации.

Если этого не сделать, вам нужно будет переместить animation.json по некоторому пути, который обслуживается вашим сервером, и установить для path URL-адрес, относящийся к странице, которая загружена в данный момент.

Другие вопросы по теме