@Mespo quando você faz o JSON.stringify, todos as keys que tem valor undefined serão omitidas. Tendo dito isso, muito provavelmente os dados que você está enviando não estão chegando no req.body.
Poderia mostrar para a gente como que você está invocando isso?
A princípio, faz um console.log(req.body) para ver se os dados estão mesmo chegando ali.
A propósito, uma idea de refactoring (pora favor, não me entenda mal).
app.post('/register', (req, res) => {
const { firstName, lastName, email, password, confirmPassword } = req.body
const requiredFields = [firstName, lastName, email, password, confirmPassword]
const anyFieldWithoutValue = requiredFields.find((field) => field.trim() === '')
if (anyFieldWithoutValue) {
return res.render('register', {
message: 'Preencha todos os campos.'
});
}
if (password !== confirmPassword) {
return res.render('register', {
message: 'As senhas não coincidem.'
});
}
if (admin.some(user => user.email == email)) {
return res.render('register', {
message: 'Esse e-mail já está em uso.'
});
}
let newUser = {
id: admin.length + 1,
firstName,
lastName,
email,
password
}
admin.push(newUser);
fs.writeFileSync('./admin.json', JSON.stringify(admin));
res.redirect('/login');
});