Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 护照+;Express+;Typescript req.user.email未定义_Javascript_Node.js_Typescript_Express_Passport.js - Fatal编程技术网

Javascript 护照+;Express+;Typescript req.user.email未定义

Javascript 护照+;Express+;Typescript req.user.email未定义,javascript,node.js,typescript,express,passport.js,Javascript,Node.js,Typescript,Express,Passport.js,嗯,我有一个类似的问题(我知道这和另一个类似)。但是在我安装之前,req.user是未定义的 现在我在VS代码中遇到了这个问题,尽管我在服务器上进行了会话实例化 问题 实例化 //中间件 use(bodyParser.urlencoded({extended:false})); 应用程序使用(记录器(process.env.NODE_env==='development'?'dev':'combined'); 使用(express.json()); 应用程序使用(会话)({ 机密:proces

嗯,我有一个类似的问题(我知道这和另一个类似)。但是在我安装之前,
req.user
是未定义的

现在我在VS代码中遇到了这个问题,尽管我在服务器上进行了会话实例化

问题

实例化
//中间件
use(bodyParser.urlencoded({extended:false}));
应用程序使用(记录器(process.env.NODE_env==='development'?'dev':'combined');
使用(express.json());
应用程序使用(会话)({
机密:process.env.NODE_env==='development'?process.env.SESSION_secret:'secret',
resave:false,
saveUninitialized:true
}));
app.use(passport.initialize());
app.use(passport.session());
上面没有错误。因此。。。该应用程序实际上可以工作。。。但是我的VSC文件中出现了这种“错误颜色”,这是最好避免的。有什么建议吗

以防万一,我将包括整个路由器文件:

//POST-Crear usuario
router.post('/',异步(请求:请求,回复:响应)=>{
const resultado:IResultado={
数据:空,
好:错
};
常量消息:数组=[];
常量数据:IUsuario=所需主体;
//瓦利达西翁·德坎波斯
如果(!validator.isEmail(datos.email)){
信息推送({电子邮件:'El correo Electroónico es inválido'});
}
if(validator.isLength(datos.password,{max:5})){
消息推送({密码:La contraseña debe tener como mínimo seis caracteres');
}
if(!validator.isMobilePhone(datos.telefono,['es-UY'])){
信息推送({telefono:'El número de teléfono es inválido');
}
如果(!空(消息)){
resultado.message='没有任何错误';
resultado.messages=消息;
返回res.json(resultado);
}
datos.password=等待bcrypt.hash(datos.password,10);
datos.fechacreation=Date.now();
datos.fechazacion=Date.now();
if(请求用户和请求用户){
datos.propietario=req.user.email;
}
const ref:any=db.collection('usuarios').doc(datos.email);
const doc=wait ref.get();
如果(文件存在){
//乌萨里奥亚存在
resultado.message='El correo electroónico ya estáen uso';
返回res.json(resultado);
}
试一试{
等待参考设置(datos);
删除datos.password;
resultado.message='Usuario creado correctamente';
resultado.data=datos;
resultado.ok=true;
返回res.json(resultado);
}捕获(错误){
resultado.message='没有任何错误';
resultado.error=错误;
console.log(错误);
返回res.status(500.json)(resultado);
}
});
用户界面(
@types/passport
模块)
//tslint:禁用下一行:无空接口
接口AuthInfo{}
//tslint:禁用下一行:无空接口
界面用户{}
接口请求{
authInfo?:authInfo;
用户?:用户;
...

我想你所需要做的就是扩展基本的
用户
类型界面。上面已经有人问过了

用户界面扩展了您定义的其他用户类型{
电子邮件?:字符串;
AlsoAnyOtherPropertyYourCodeSetOnUser:编号;
}

您需要扩展
Express。用户
键入:

declare global {
  namespace Express {
    interface User {
      email: string;
    }
  }
}

您确定
用户
有自己的属性电子邮件吗?看起来没有,但您可能可以手动初始化它。默认情况下,它只包含
用户名
id
属性。它没有。但在
@types/passport
模块中定义。我将按照您提到的方式对其进行扩展。是的,但我确实搜索了它。我没有找到它.无论如何,谢谢。不要嘲笑你,因为它不容易找到。只是想提供第一手的控制器解决方案