Это супер странно. У меня все работает при запуске приложения Node.js на локальном хосте. Но после развертывания в Heroku он всегда дает мне 400 Bad Request и пустое тело ответа {}. Я протестировал обе среды с одним и тем же запросом почтальона, меняя только базовый URL.
Вот мой метод сообщения:
app.post('/users', (req, res) => {
var body = _.pick(req.body, ['email', 'password', 'f_name', 'l_name', 'phone', 'address']);
var user = new User(body);
user.save().then(() => {
return user.generateAuthToken();
}).then((token) => {
res.header('x-auth', token).send(user);
}).catch((err) => {
res.status(400).send(err);
});
});
В конце концов, я увидел, что всякий раз, когда я пытался создать токен при публикации нового пользователя, моя db localhost работает, но токен в среде Heroku не создавался.
Что означает, что эта функция является наиболее подозрительной из всех:
UserSchema.methods.generateAuthToken = function () {
var user = this;
var access = 'auth';
var token = jwt.sign({_id: user._id.toHexString(), access}, process.env.JWT_SECRET).toString();
user.tokens = user.tokens.concat([{access, token}]);
return user.save().then(() => {
return token;
}).catch((err) => {
return err;
});
};
Чего я не понимаю, так это то, что может иметь значение в среде развертывания? И как я узнаю, что пошло не так в Heroku? При локальном запуске мы обычно получаем эти журналы ошибок, журналы heroku не приносят никакой пользы. И хотя я пытался поймать ошибку и вернуть ее, в тело ответа почтальона ничего не пришло.
Спасибо за любую помощь!