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",
}
убрать запятую после "..image.jpg"
используйте это: { "name":"Harry", "email": "[email protected]", "password" : "harry", "avatar" : "https://image.jpg" }
Я удалил запятую после "..image.jpg", я получил эту ошибку TypeError: Ожидаемая строка, но получила неопределенное значение.
ваш объект newUser не завершен. аватар: req.body.avatar отсутствует
при обновлении с использованием аватара: req.body.avatar я все еще получаю эту ошибку TypeError: Ожидаемая строка, но получено неопределенное значение. <br> & nbsp; & nbsp; в assertString (
Не могли бы вы поделиться новыми журналами ошибок. Это поможет лучше понять, поскольку ошибка может быть в другом месте.
TypeError: ожидаемая строка, но получено неопределенное значение. <br> & nbsp; & nbsp; в assertString (D: \ PROJECTS \ mern-socialntwk \ node_modules \ validator \ lib \ util \ assertString.js: 28: 11) <br> & nbsp; & nbsp; в Object.isEmpty
Есть ли какой-либо метод в почтальоне при использовании паспортов.
Похоже, эта ошибка исходит от пакета валидатора node_modules. Он просто добавляет несколько проверок для ваших входных данных, ссылка npmjs.com/package/validator. Пожалуйста, разместите код сниппета, в котором вы используете эту библиотеку.
Добавил свой ответ, и это сработало для меня. Пожалуйста, примите и проголосуйте за ответ, если он работает для вас, иначе дайте мне знать о проблеме. Спасибо.
Позвольте нам продолжить обсуждение в чате.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В соответствии с вашим кодом вам необходимо отправить пароль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}});
это моя схема, поскольку я вижу, что пароля нет2, это только в моей проверке
Да, при проверке вы проверяете наличие «пароля2», которого нет в теле вашего запроса. Помимо этого есть еще одна ошибка в файле is-empt.js. добавьте "return" перед вашим кодом, иначе вы всегда будете получать undefined.
Итак, поскольку в теле запроса нет "password2", строка 30 файла register.js выдает ошибку. Отправка "password2" в запросе исправит эту ошибку.
добавлен пароль 2 в теле и в схеме, а также добавлен возврат в is-empty.js, но я получаю эту ошибку SyntaxError: Unexpected token & # 39; в JSON на позиции 143
Пожалуйста, используйте приведенный выше завиток или импортируйте его в свой почтальон или поделитесь телом запроса, чтобы мы могли помочь вам решить эту проблему.
Можете ли вы сказать, что это за код в строке
119