2017-01-08 1 views
0

Я пробовал руководство пользователя 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, но не на смену?

+1

У меня есть также такая же проблема. Вы нашли решение для этого? –

+0

Можете ли вы попробовать реплицировать проблему на новой версии узла? Для нас она исчезла всякий раз, когда мы пытались использовать 5.12.0 или 6.6.0, тогда как мы получили ту же ошибку в узле 5.7.1 – Lukx

+0

Так что у меня была та же проблема. Я обнаружил, что модернизация моего узла сделала трюк. Какую версию ты используешь? –

ответ

0

Я получаю сегодня аналогичную ошибку, связанную с некоторым обновлением mongodb-core.

Я установил ее, заставляя MongoDB-сердечник к предыдущей версии я имел:

npm install --save [email protected] 
+0

Спасибо, я решил это с помощью 'npm update' –

Смежные вопросы