O erro vem do
bcrypt.hash No seu caso, você tem o seguinte trecho de código:bcrypt.hash(newUser.password, salt , (err, hash) => { ... }
Acho que seu problema vem do
newUser.password que deve estar vazio (null ou undefined ). O erro diz data and salt arguments required . Parece que seu salt foi gerado corretamente e você não verificou se newUser.password === undefined , então aqui está minha aposta:de alguma forma newUser.password é indefinido. Além disso, você pode verificar se o
genSalt O método funciona bem adicionando if(err) throw (err); depois de chamá-lo como você fez para o bcrypt.hash método.