1
これは非常に具体的な質問ですが、実際に何が原因でエラーが発生しているのか分かりません。ReferenceError:ユーザーが定義されていません
router.get('/user/profile', passport.authenticate('jwt', { session: false }), function(req, res, next){
// Something
});
私はそれが私のカスタムgetUserById()関数が含まれて私のパスポート、JWTコードを通過するルートにアクセスすると、それはユーザーモデルで定義されている
let opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt');
opts.secretOrKey = config.secret;
passport.use(new JwtStrategy(opts, function(jwt_payload, done){
Users.getUserById(jwt_payload._id, function(err, user){
if(err){
return done(err, false);
}
if(user){
return done(null, user);
} else {
return done(null, false);
}
});
}));
:私は、次のコードを持っていますgetUserById()
module.exports.getUserById = function(id, callback){
Users.findById(id, callback);
}
私は私のサーバーは、次のエラーを出してくれるのルートにアクセスします。
ReferenceError: Users is not defined
at Function.module.exports.getUserById (E:\Projects\CSGOOrb\models\users.js:55:2)
at JwtStrategy._verify (E:\Projects\CSGOOrb\config\passport.js:18:9)
at E:\Projects\CSGOOrb\node_modules\passport-jwt\lib\strategy.js:123:34
at E:\Projects\CSGOOrb\node_modules\jsonwebtoken\verify.js:27:18
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
私はそれを利用するすべてのファイルに自分のユーザーモデルを必要としています。誰もがそれを引き起こす可能性があることを知っていますか?
EDIT:
passport.js
const colors = require('colors/safe');
const Users = require('../models/users');
const config = require('../config/database');
const jwt = require('jsonwebtoken');
const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;
const SteamStrategy = require('passport-steam').Strategy;
module.exports = function(passport){
let opts = {};
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderWithScheme('jwt');
opts.secretOrKey = config.secret;
passport.use(new JwtStrategy(opts, function(jwt_payload, done){
Users.getUserById(jwt_payload._id, function(err, user){
if(err){
return done(err, false);
}
if(user){
return done(null, user);
} else {
return done(null, false);
}
});
}));
...
users.js(マングースモデル)
const mongoose = require('mongoose');
const config = require('../config/database');
// Users Schema
const UsersSchema = mongoose.Schema(
{
admin: {
type: Boolean,
default: false
},
mod: {
type: Boolean,
default: false
},
user: {
type: Boolean,
default: true
},
steam: {
id: {
type: String
},
identifier: {
type: String
},
name: {
type: String
},
avatar: {
type: String
},
avatarmedium: {
type: String
},
avatarfull: {
type: String
},
tradelink: {
type: String
}
}
},
{
timestamps:
{
createdAt: 'created_at',
updatedAt: 'updated_at'
}
}
);
const Users = module.exports = mongoose.model('User', UsersSchema);
module.exports.getUserById = function(id, callback){
Users.findById(id, callback);
}
module.exports.getUserById64 = function(id, callback){
const query = {id: steam.id};
Users.findOne(query, callback);
}
ユーザーは定義されていますか? – Keith
オリジナルの投稿を編集してpassport.jsを追加しました。これはパスポートを設定するファイルです。ユーザーは一番上に定義されています。もっと必要な場合は教えてください – DerJP
'Users'オブジェクトをエクスポートし、' getUserById'をプロトタイプメソッドとして追加しようとしましたか? – lumio