Я пробовал руководство пользователя loginjs с использованием паспорта.express4 паспорт desirializeuser TypeError: hex не является функцией
deserializeUser работает хорошо, когда организовано c9.io
Но организованный OpenShift он делает ошибку
TypeError: hex is not a function
at Function.from (native)
at Function.from (native)
at new ObjectID (/opt/app-root/src/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/lib/bson/objectid.js:52:32)
at ObjectID (/opt/app-root/src/node_modules/mongodb/node_modules/mongodb-core/node_modules/bson/lib/bson/objectid.js:31:42)
at /opt/app-root/src/app.js:120:17
at pass (/opt/app-root/src/node_modules/passport/lib/authenticator.js:347:9)
at Authenticator.deserializeUser (/opt/app-root/src/node_modules/passport/lib/authenticator.js:352:5)
at SessionStrategy.authenticate (/opt/app-root/src/node_modules/passport/lib/strategies/session.js:53:28)
at attempt (/opt/app-root/src/node_modules/passport/lib/middleware/authenticate.js:348:16)
at authenticate (/opt/app-root/src/node_modules/passport/lib/middleware/authenticate.js:349:7)
at Layer.handle [as handle_request] (/opt/app-root/src/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/opt/app-root/src/node_modules/express/lib/router/index.js:312:13)
at /opt/app-root/src/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/opt/app-root/src/node_modules/express/lib/router/index.js:330:12)
at next (/opt/app-root/src/node_modules/express/lib/router/index.js:271:10)
at initialize (/opt/app-root/src/node_modules/passport/lib/middleware/initialize.js:53:5)
Мой deserializeUser код, как это
var express = require("express"),
app = express(),
cookieParser = require("cookie-parser"),
bodyParser = require('body-parser'),
assert = require('assert'),
fs = require("fs"),
XLSX = require("xlsx"),
session = require('express-session'),
MongoStore = require('connect-mongo')(session),
multer = require("multer"),
passport = require('passport'),
LocalStrategy = require('passport-local').Strategy,
mongodb = require('mongodb'),
ObjectId = require('mongodb').ObjectId;
passport.serializeUser(function(user, done) {
console.log("serialize:%s",user._id);
done(null, user._id);
});
passport.deserializeUser(function(id, done) {
if (!db) {
initDb(function(err){});
}
if (db){
var col = db.collection("users");
col.findOne(ObjectId(id), function(err, user) {
console.log("deserialize:%s",user.username);
return done(err, user);
});
}
});
линии (/ неавтоматического /app-root/src/app.js:120:17) является
col.findOne(ObjectId(id), function(err, user) {
Я думаю, что функция ObjectId не работает в среде с открывающимся доступом
Это просто ошибка? зачем работать на c9.io, но не на смену?
У меня есть также такая же проблема. Вы нашли решение для этого? –
Можете ли вы попробовать реплицировать проблему на новой версии узла? Для нас она исчезла всякий раз, когда мы пытались использовать 5.12.0 или 6.6.0, тогда как мы получили ту же ошибку в узле 5.7.1 – Lukx
Так что у меня была та же проблема. Я обнаружил, что модернизация моего узла сделала трюк. Какую версию ты используешь? –