JSON.parse: неожиданный символ в строке 1 столбца 1 данных JSON при обслуживании сборки

#node.js #reactjs #postgresql #express

Вопрос:

я изо всех сил пытаюсь исправить ошибки синтаксического анализа json в своем приложении PERN, я действительно не знаю, что не так с кодом, потому что он выдает ошибки, когда я обслуживаю сборку. Я отправляю ответ json после аутентификации, и если я проверяю почтальона, я вижу, что все правильно, когда я нахожусь в режиме разработки.

 async function isAuth() {   try {  const response = await fetch("http://localhost:5000/auth/verify", {  method: "GET",  headers: { token: localStorage.token }  })   const parseRes = await response.json()   parseRes === true ? setIsAuthenticated(true) : setIsAuthenticated(false)  } catch (error) {  console.error(error.message)  }  }  

Это метод, который я использую, чтобы проверить, является ли токен правильным или нет (я использую токены jwt для аутентификации).

Ошибка здесь :

 const parseRes = await response.json()  

Код сервера таков:

 router.get("/verify", authorization, async (req, res) =gt; {  try {  res.json(true)  } catch (error) {  console.error(error.message);  } })  

Этот метод использует промежуточное программное обеспечение авторизации для проверки правильности маркера или нет.

Промежуточное программное обеспечение для авторизации:

 const jwt = require("jsonwebtoken") require("dotenv").config()  module.exports = async (req, res, next) =gt; {  try {  const jwtToken = req.header("token")   if (!jwtToken) {  return res.status(403).json("Not Authorized")  } else {  const payload = jwt.verify(jwtToken, `${process.env.ACCESS_TOKEN_SECRET}`)   req.user = payload.user  next()  }   } catch (error) {  console.error(error.message);  res.status(403).json("Not Authorized")  } }  

У меня та же ошибка, когда я пытаюсь выполнить вход и регистрацию.

Если вам нужно больше кода, просто скажите мне, мне действительно нужна помощь.

Заранее спасибо.

Комментарии:

1. http://localhost:5000 не имеет особого смысла для производственной сборки, что показывает консоль на вкладке «Сеть» для ответа? кроме того, если это не удалось, вы ничего не возвращаете, просто console.error’in, который бесполезен для клиента

2. Я знаю о localhost, это приложение будет размещено локально, поэтому я просто держал этот URL-адрес, чтобы посмотреть, работает ли он, но я его изменю

3. Что там, response когда вы смотрите на вкладке «Сеть»?

4. @DaveNewton у меня есть какой-то html, например, если есть ошибка, а не ответ json, который я хотел

5. Возможно, стоило бы взглянуть на это и определить, в чем заключается ошибка.

Ответ №1:

попробуйте добавить следующий заголовок:

 Content-Type: 'application/json'  

случись со мной один раз, и эта строчка исправит это

Обновление: проблема, вероятно localStorage.token , в том, что вы не можете получить доступ к этому локальному хранилищу и можете сделать это только с помощью localStorage.getItem("token")

и обновите и добавьте ответ без .json (), чтобы мы могли проверить, почему мы получаем то, что получаете вы.

Комментарии:

1. У меня все еще та же проблема

2. проверьте мои обновления

3. Я исправил это, я случайно забыл запустить сервер, и он ничего не работал, извините, что потратил ваше время