OK – rozgryzłem to.
W moim lokalnym systemie miałem nowszą wersję węzła, ale w mojej wdrożonej wersji (na AWS ElasticBeanstalk) używałem wersji 0.10.36.
Jeśli spojrzysz na kod passport-local-mongoose
zobaczysz to:
var pbkdf2DigestSupport = semver.gte(process.version, '0.12.0');
...
var pbkdf2 = function(password, salt, callback) {
if (pbkdf2DigestSupport) {
crypto.pbkdf2(password, salt, options.iterations, options.keylen, options.digestAlgorithm, callback);
} else {
crypto.pbkdf2(password, salt, options.iterations, options.keylen, callback);
}
};
Więc jeśli dwie różne wersje węzła mają jedną powyżej 0.12.0 i jedną poniżej, uzyskasz inną funkcjonalność kryptograficzną.