gpt4 book ai didi

node.js - 类型错误 : Cannot read property 'passport' of undefined nodejs

转载 作者:行者123 更新时间:2023-12-05 09:03:57 26 4
gpt4 key购买 nike

我目前正在使用 Express、Node、Mongoose 和 Passport.js 开发注册和登录系统,并且注册大部分工作正常,但登录系统存在一个大问题。由于某种原因,在我创建护照的方法中无法读取未定义的“护照”,因此出现未定义的情况,但我似乎无法弄清楚。我不知道为什么它不起作用,请帮忙!!

这是我的代码应用程序.js

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const cors = require('cors');
const passport = require('passport');
const mongoose = require('mongoose');
const config = require('./config/database');

mongoose.connect(config.database);

mongoose.connection.on('connected', () => {
console.log('Connected to database ' + config.database);
});

mongoose.connection.on('error', (err) => {
console.log('Database error:' + err);
});


const app = express();
const users = require('./routes/users');
const port = 3000;

app.use(cors());
app.use(express.static(path.join(__dirname, 'public')));

app.use(bodyParser.json());

app.use(passport.initialize());
app.use(passport.session());

app.use('/users', users);

app.get('/', (req, res) => {
res.send('Invalid Endpoint');
});

app.listen(port, () =>{
console.log('Server started on port' + port);
});

    users.js 

const express = require('express');
const router = express.Router();
const passport = require('passport');
const jwt = require('jsonwebtoken');
const User = require('../models/user');



router.post('/register', (req, res, next) =>{
let newUser = new User({
name: req.body.name,
email: req.body.email,
username: req.body.username,
password: req.body.password
});

User.addUser(newUser, (err, user) => {
if(err){
res.json({success: false, msg:'Failed to register user'});
}else {
res.json({success: true , msg:'User registered'});
}
});
});

router.post('/authenticate', (req, res, next) =>{
res.send('AUTHENTICATE');
});

router.get('/profile', (req, res, next) =>{
res.send('PROFILE');
});



module.exports = router;

最佳答案

您的问题与通行证 session 有关。在它正常工作之前,你需要使用 express session(记得在你的依赖项中安装)。

你的 app.js 应该是这样的:

const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const cors = require('cors');
const passport = require('passport');
const mongoose = require('mongoose');
const config = require('./config/database');
const session = require("express-session");

mongoose.connect(config.database);

mongoose.connection.on('connected', () => {
console.log('Connected to database ' + config.database);
});

mongoose.connection.on('error', (err) => {
console.log('Database error:' + err);
});


const app = express();
const users = require('./routes/users');
const port = 3000;

app.use(cors());
app.use(express.static(path.join(__dirname, 'public')));

app.use(bodyParser.json());

app.use(session({secret: "secret"});

app.use(passport.initialize());
app.use(passport.session());

app.use('/users', users);

app.get('/', (req, res) => {
res.send('Invalid Endpoint');
});

app.listen(port, () =>{
console.log('Server started on port' + port);
});

此外,请记住,对于 Express 4.16.0 或更高版本,正文解析器已被弃用。它已在方法 express.json()express.urlencoded() 中重新添加,因此如果您的 Express 版本属于该类别,您可以更改您的 app.js到:

const express = require('express');
const path = require('path');
const cors = require('cors');
const passport = require('passport');
const mongoose = require('mongoose');
const config = require('./config/database');
const session = require("express-session");

mongoose.connect(config.database);

mongoose.connection.on('connected', () => {
console.log('Connected to database ' + config.database);
});

mongoose.connection.on('error', (err) => {
console.log('Database error:' + err);
});


const app = express();
const users = require('./routes/users');
const port = 3000;

app.use(cors());
app.use(express.static(path.join(__dirname, 'public')));

app.use(express.urlencoded({ extended: true }));
app.use(express.json());
app.use(session({secret: "secret"});

app.use(passport.initialize());
app.use(passport.session());

app.use('/users', users);

app.get('/', (req, res) => {
res.send('Invalid Endpoint');
});

app.listen(port, () =>{
console.log('Server started on port' + port);
});

我建议在您的代码中添加注释以保持代码整洁。

关于node.js - 类型错误 : Cannot read property 'passport' of undefined nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69348404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com