我正在制作一个登录和注册页面。我正在使用护照进行身份验证。我也在使用mongos se。一切都很好,但是我不知道为什么user.name未定义。我尝试了在堆栈上找到的与此问题相关的每个解决方案,但都不匹配。
router.js
require('dotenv').config()
}
const bcrypt = require('bcrypt')
const path = require('path');
const express = require('express');
const User = require('../models/user');
const passport = require('passport');
const initializePassport = require('./passport-config')
const flash = require('express-flash')
const session = require('express-session');
const { JsonWebTokenError } = require('jsonwebtoken');
require('./db/mongoose');
const app = express();
const port = process.env.PORT || 3000;
const publicDirectoryPath = path.join(__dirname, '../html" target="_blank">public');
const viewsPath = path.join(__dirname, '../views');
initializePassport(
passport,
async(email)=>await User.findOne({email: email}),
async(id)=>await User.findById(id).then(console.log())
)
app.set('view engine', 'ejs');
app.set('views', viewsPath);
app.use(express.static(publicDirectoryPath));
app.use(express.urlencoded({extended: false}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session())
app.use(session({
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false
}));
app.get('/registration',(req, res) => {
res.render('registration.ejs');
})
app.get('/login',(req, res) => {
res.render('login.ejs')
})
app.get('/menu',(req, res) => {
res.render('menu.ejs', { name: req.user.name })
})
app.post('/registration', async(req, res) => {
try{
const hashedPassword = await bcrypt.hash(req.body.password, 10);
const newUser = new User({
name: req.body.name,
email: req.body.email,
password: hashedPassword
});
newUser.save();
res.redirect('/login');
} catch{
res.redirect('/registration')
}
})
app.post('/login', passport.authenticate('local', {
successRedirect: '/menu',
failureRedirect: '/login',
failureFlash: true,
}))
app.listen(port, () => {
console.log('Server is on port 3000');
})
passport配置。js公司
const bcrypt = require('bcrypt')
function initialize(passport, getUserByEmail, getUserById){
const authenticateUser = async (email, password, done)=>{
const user = await getUserByEmail(email)
if(user == null){
return done(null, false, {message: 'No existe un usuario con ese email'})
}
try{
const matchPassword = await bcrypt.compare(password, user.password)
if(matchPassword){
return done(null, user)
}else{
return done(null, false, {message: 'Constraseña Incorrecta'})
}
}catch(e){
return done(e);
}
}
passport.use(new LocalStrategy({usernameField: 'email'}, authenticateUser))
passport.serializeUser((user,done)=> done(null, user.id))
passport.deserializeUser((id,done)=> {
return done(null, getUserById(id))})
}
module.exports = initialize
错误如下:
TypeError:无法读取C:\Users\Miguel\Desktop\RestaurantControl\src\router上未定义的属性“name”。js:58:45,第层。handle[作为handle\u请求](C:\Users\Miguel\Desktop\RestaurantControl\node\u modules\express\lib\router\layer.js:95:5)at next(C:\Users\Miguel\Desktop\RestaurantControl\node\u modules\express\lib\router\route.js:137:13)at route。调度(C:\Users\Miguel\Desktop\RestaurantControl\node\U modules\express\lib\router\route.js:112:3)位于层。在C:\Users\Miguel\Desktop\RestaurantControl\node\u modules\express\lib\router\layer.js:95:5中处理[作为句柄\u请求](C:\Users\Miguel\Desktop\RestaurantControl\node\u modules\express\lib\router\index)。js:281:22 at函数。立即在下一个(C:\Users\Miguel\Desktop\RestaurantControl\node\u modules\express\lib\router\index.js:335:12)处理\u参数(C:\Users\Miguel\Desktop\RestaurantControl\node\u modules\express\lib\router\index.js:275:10)_位于processImmediate(内部/计时器js:460:21)的onImmediate(C:\Users\Miguel\Desktop\RestaurantControl\node\U modules\express session\index.js:502:7)
router.get('/', checkAuthorization, async (req, res) => {
const result = await req.user
res.render('index.ejs', data = { name: result.name}) })
如果您使用护照模块,req.user
将返回promise。等待req.user
和异步函数
。我有同样的问题,并想出了这个解决方案。
当我在react中工作时。当我想要侧边页时,我会显示“TypeError:不能读取未定义的属性(读取'pathname')”!
如果函数在组件中,那么一切都很好。如果我把它单独取出并导出到一个组件中,那么我会得到一个错误TypeError:不能读取未定义的属性(读取'reduce')
问题内容: 我试图在ajax回调从REST api接收数据后设置组件的setState。这是我的组件构造函数代码 然后,我有一个如下所示的方法。 现在,这是我执行getAJAX请求的getPosts函数。 我想设置状态,但出现以下错误。 不太清楚是什么原因造成的。如果有人指出我正确的方向,那将真的很有帮助。提前致谢。 问题答案: 还绑定回调函数,以便回调内部指向React Component的上下
我试图使用node.js express web服务器中的@tensorflow/tfjs-node模块。但是,我得到了下面的错误。我不明白为什么我会出现这个错误。我刚刚在node.js服务器中添加了1行代码。我使用“npm install@tensorflow/tfjs-node”完成的安装。可能的问题是什么? null 先谢谢你, var nonMaxSuppressionV3Impl=tf.
我正在尝试联系许多对许多,在两个模式“培训和培训课程”,所以我做了第三个模式“课程”,以尝试关系1对许多。但是我得到了一个错误: null TypeError:无法读取对象上未定义得属性“belongsto”。(c:UsersDellDownloadsGraphql-12.18.2020Graphql-12.18.2020Graphql-12.18.2020ServerAppDatabaseDat
上面的函数返回一个类似“failed”的字符串。但是,当我尝试在其上运行then函数时,它将返回 并且光标指示在之后和。 下面是完整的功能: 更新 下面是函数 我确信将导致一个“failed”字符串。没别的了。