mysql - 类型错误:无法读取未定义的属性“护照”
问题描述
我是护照新手并且遇到了这个问题,所以这可能是护照的一个非常基本的开发错误,我正在做的优先级是在 index.js 中:
const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser');
var jsonParser = bodyParser.json()
const passport = require('passport')
// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })
const connection = require('../../database/db.js');
router.get('/', (req, res) => {
res.render('user');
});
router.get('/login', (req, res) => {
res.render('login');
});
router.get('/home', (req, res) => {
res.send('hola');
});
router.post('/login', passport.authenticate('local.signup', {
successRedirect: '/home',
failureRedirect: '/login',
failureFlash: true
}));
module.exports = router;
而我的主文件是app.js,我在其中做passport.session,passport.json,所以这可能是错误“passport”未定义:
const express = require('express');
const morgan = require('morgan');
const path = require('path');
const app = express();
require('./lib/passport.js')
const mysql = require('mysql');
const myConnection = require('express-myconnection');
const session = require("express-session");
const passport = require('passport');
// settings
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.urlencoded({extended: false}));
app.use(express.json());
app.use(passport.initialize());
app.use(passport.session());
// middlewares
app.use(morgan('dev'));
// routes
app.use(require('./routes'));
// static files
app.use(express.static(path.join(__dirname, 'public')));
// listening the Server
app.listen(app.get('port'), () => {
console.log('Server on port', app.get('port'));
});
最后,我得到控制台的错误,但如果我无法读取错误:
TypeError: Cannot read property 'passport' of undefined
at SessionStrategy.authenticate (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\passport\lib\strategies\session.js:51:18)
at attempt (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\passport\lib\middleware\authenticate.js:360:16)
at authenticate (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\passport\lib\middleware\authenticate.js:361:7)
at Layer.handle [as handle_request] (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\index.js:317:13)
at C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\index.js:275:10)
at initialize (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\passport\lib\middleware\initialize.js:66:5)
at Layer.handle [as handle_request] (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\layer.js:95:5)
解决方案
我认为,您的问题与护照会议有关。您需要在它之前使用 express session 才能正常工作。
推荐阅读
- delphi - 如何使用 ZXing 找出 qrcode 方向?
- python - Numpy:加载 csv 文件并使用 genfromtxt 读取字符串值给出警告
- python - 我得到 django.db.utils.IntegrityError: UNIQUE constraint failed: auth_user.username 无明显原因
- django - Django 自定义用户函数
- swift - SwiftUI:如何实现 SwipGesture?
- node.js - 为了尽量减少 Firebase Cloud 函数的冷启动时间,如何导入一个类以在一个函数中使用?
- android - 无法在云控制台中启用 Maps SDK for Android
- python-3.x - 使用命令“ls -t | tail -n +4 | xargs rm --”删除另一个位置的文件
- armeria - 如何让 Armeria 在出现“地址已在使用”错误时退出?
- c++ - 在 C++ 中擦除后在地图上迭代时出现奇怪的问题