SyntaxError: неожиданный токен} в JSON в позиции

I am trying to create a route for register by using passportjs. On request using postman , I am getting this error : SyntaxError: Unexpected token } in JSON at position 119
   at JSON.parse (<anonymous>)

Below is my code :

const express = require("express");
const router = express.Router();
const gravatar = require("gravatar");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
const keys = require("../config/keys");
const passport = require("passport");
//load input validation
const validateRegisterInput = require("../validation/register");
//user model
const User = require("../models/User");

router.get("/test", (req, res) => res.json({ msg: "user route works" }));

//post - api/users/register
router.post("/register", (req, res) => {
  const { errors, isValid } = validateRegisterInput(req.body);
  //check validation
  if (!isValid) {
    return res.status(400).json(errors);
  }
  User.findOne({ email: req.body.email }).then(user => {
    if (user) {
      errors.email = "Email already exists";
      return res.status(400).json(errors);
    } else {
      const avatar = gravatar.url(req.body.email, {
        s: "200", // Size
        r: "pg", // Rating
        d: "mm" // Default
      });

      const newUser = new User({
        name: req.body.name,
        email: req.body.email,
        password: req.body.password,
        avatar
      });


      bcrypt.genSalt(10, (err, salt) => {
        bcrypt.hash(newUser.password, salt, (err, hash) => {
          if (err) throw err;
          newUser.password = hash;
          newUser
            .save()
            .then(user => res.json(user))
            .catch(err => console.info(err));
        });
      });
    }
  });
});

module.exports = router;

Below is my request using postman :

{
  "name":"Harry",
  "email": "[email protected]",
  "password" : "harry",
  "avatar" : "https://image.jpg",
}

Можете ли вы сказать, что это за код в строке 119

Ankit Agarwal 24.12.2018 13:23

убрать запятую после "..image.jpg"

jps 24.12.2018 13:24

используйте это: { "name":"Harry", "email": "[email protected]", "password" : "harry", "avatar" : "https://image.jpg" }

Vikas Yadav 24.12.2018 13:24

Я удалил запятую после "..image.jpg", я получил эту ошибку TypeError: Ожидаемая строка, но получила неопределенное значение.

Abhishek Konnur 24.12.2018 13:25

ваш объект newUser не завершен. аватар: req.body.avatar отсутствует

varatharajan 24.12.2018 13:29

при обновлении с использованием аватара: req.body.avatar я все еще получаю эту ошибку TypeError: Ожидаемая строка, но получено неопределенное значение. <br> & nbsp; & nbsp; в assertString (

Abhishek Konnur 24.12.2018 13:41

Не могли бы вы поделиться новыми журналами ошибок. Это поможет лучше понять, поскольку ошибка может быть в другом месте.

AnkurJat 24.12.2018 13:42

TypeError: ожидаемая строка, но получено неопределенное значение. <br> & nbsp; & nbsp; в assertString (D: \ PROJECTS \ mern-socialntwk \ node_modules \ validator \ lib \ util‌ \ assertString.js: 28: ‌ 11) <br> & nbsp; & nbsp; в Object.isEmpty

Abhishek Konnur 24.12.2018 13:45

Есть ли какой-либо метод в почтальоне при использовании паспортов.

Abhishek Konnur 24.12.2018 13:45

Похоже, эта ошибка исходит от пакета валидатора node_modules. Он просто добавляет несколько проверок для ваших входных данных, ссылка npmjs.com/package/validator. Пожалуйста, разместите код сниппета, в котором вы используете эту библиотеку.

AnkurJat 24.12.2018 13:49
github.com/4bhishekKasam/social-platform-MERN-
Abhishek Konnur 24.12.2018 13:55

Добавил свой ответ, и это сработало для меня. Пожалуйста, примите и проголосуйте за ответ, если он работает для вас, иначе дайте мне знать о проблеме. Спасибо.

AnkurJat 24.12.2018 14:08

Позвольте нам продолжить обсуждение в чате.

AnkurJat 24.12.2018 14:31
Поведение ключевого слова "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) для оценки ваших знаний,...
0
13
2 626
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В соответствии с вашим кодом вам необходимо отправить пароль2 в теле. Итак, используйте ниже curl для запроса, и все будет в порядке.

curl -X POST \ http://localhost:8080/api/users/register \ -H 'Cache-Control: no-cache' \ -H 'Content-Type: application/json' \
-H 'Postman-Token: c437c084-def1-427f-bf43-33b92a747244' \ -d '{ "name":"Harry", "email": "[email protected]", "password" : "harry12", "password2" : "harry12", "avatar" : "https://image.jpg" }'

const UserSchema = новая схема ({name: {type: String, required: true}, электронная почта: {type: String, required: true}, пароль: {type: String, required: true}, аватар: {type: String} , date: {type: Date, по умолчанию: Date.now}});

Abhishek Konnur 24.12.2018 14:18

это моя схема, поскольку я вижу, что пароля нет2, это только в моей проверке

Abhishek Konnur 24.12.2018 14:18

Да, при проверке вы проверяете наличие «пароля2», которого нет в теле вашего запроса. Помимо этого есть еще одна ошибка в файле is-empt.js. добавьте "return" перед вашим кодом, иначе вы всегда будете получать undefined.

AnkurJat 24.12.2018 14:23

Итак, поскольку в теле запроса нет "password2", строка 30 файла register.js выдает ошибку. Отправка "password2" в запросе исправит эту ошибку.

AnkurJat 24.12.2018 14:24

добавлен пароль 2 в теле и в схеме, а также добавлен возврат в is-empty.js, но я получаю эту ошибку SyntaxError: Unexpected token & # 39; в JSON на позиции 143

Abhishek Konnur 24.12.2018 14:33

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

AnkurJat 24.12.2018 14:35

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