ошибка реакции - Uncaught SyntaxError: неожиданный токен o в JSON в позиции 1 - PullRequest
0 голосов
/ 25 мая 2020

Я переключил свою внутреннюю базу данных, создал нового суперпользователя, а затем ввел yarn start в go в среду разработки для реагирования. только теперь получить эту ошибку

VM4135: 1 Uncaught SyntaxError: Неожиданный токен o в JSON в позиции 1 в JSON .parse ()

Я считаю проблема в том, что я извлекаю веб-токен и пользовательские данные одновременно. затем сохраняя их в локальном хранилище, но поскольку в локальном хранилище ничего нет, поскольку это загрузка fre sh, он ищет токен, которого нет? Я не уверен, что это правильно, но, похоже, я не могу этого избежать.

любая помощь будет принята с благодарностью.

страница профиля, на которой возникает ошибка.

const user = JSON.parse(localStorage.getItem("user") || {});
const Profile = () => (
  <div className={s.root}>
    <h1 className="page-title">
      User - <span className="fw-semi-bold">Profile</span>
    </h1>
      ...

токен и действие аутентификации пользователя

// token and user auth
export function receiveToken(payload) {
  return (dispatch) => {
    const user = payload.user;
    const token = payload.token;

    delete user.id;
    localStorage.setItem("token", token);
    localStorage.setItem("user", JSON.stringify(user));
    axios.defaults.headers.common["Authorization"] = `Token ${token}`;
    dispatch(receiveLogin());
  };
}

полная ошибка

VM4135:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at Module../src/pages/profile/Profile.js (Profile.js:8)
    at __webpack_require__ (bootstrap:781)
    at fn (bootstrap:149)
    at Module../src/components/Layout/Layout.js (InputValidation.js:72)
    at __webpack_require__ (bootstrap:781)
    at fn (bootstrap:149)
    at Module../src/components/App.js (useraccounts.js:44)
    at __webpack_require__ (bootstrap:781)
    at fn (bootstrap:149)
    at Module../src/index.js (a6.jpg:1)
    at __webpack_require__ (bootstrap:781)
    at fn (bootstrap:149)
    at Object.1 (theme.scss?2910:45)
    at __webpack_require__ (bootstrap:781)
    at checkDeferredModules (bootstrap:45)
    at Array.webpackJsonpCallback [as push] (bootstrap:32)
    at main.chunk.js:1

1 Ответ

1 голос
/ 25 мая 2020

Проблема вроде в первой строке. Вы не можете parse действительный JavaScript Объект. Измените строку на:

const user = JSON.parse(localStorage.getItem("user")) || {};

Вот пример из консоли.

console

Также проверьте содержимое localStorage.getItem("user") . Что, если он хранит что-то как [object Object]? Поэтому, когда вы устанавливаете элемент локального хранилища, убедитесь, что вы сделали:

const user = {some: "obj"};
localStorage.setItem(JSON.stringify(user));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...