gpt4 book ai didi

node.js - Node js/socket/verify 不是函数

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:47 24 4
gpt4 key购买 nike

您好想了解导致此错误的原因:不是一个函数(我错过了让它发生的事情)

我正在尝试通过连接我的 io 套接字来验证我的 jwt:

  io.use(verify.authSocket(socket)
.on('connection', function(socket) {
socket.on('message', function(message) {
io.emit('message', message);
});
}));

这是 mt verify.authSocket:

const jwt = require('jsonwebtoken');
const User = require('../models/User')
const config= require('../config/dbconfig');
const moment = require('moment');

module.exports = {
async authSocket(socket,next){
const token = socket.handshake.query.token;
if(!token) return next(new Error('Unauthorized'));
try{
const decoded = jwt.verify(token,config.secretToken);
if(decoded){
next();
}else{
next(new Error('Authentication error'));
}
}catch(error){
console.error(error);
}
}
}

错误:

C:\Users\SpiriT\Documents\Projetos\FtcJokenPo\back\src\app.js:25
.on('connection', function(socket) {
^

TypeError: verify.authSocket(...).on is not a function
at Object.<anonymous> (C:\Users\SpiriT\Documents\Projetos\FtcJokenPo\back\src\app.js:25:4)

我试图了解导致此错误的原因

我以为我的 verify.authsocket 是一个函数,有人可以解释一下并帮助我修复此错误吗?

最佳答案

verify.authSocket确实是一个函数。该错误告诉您 verify.authSocket 返回的值不是函数,因此错误消息中的 (...)

 io.use(verify.authSocket(socket)) // added )
.on('connection', function(socket) {
socket.on('message', function(message) {
io.emit('message', message);
});
});

在您的代码中,您将 .on 附加到 verify.authSocket 的返回值,而不是将其添加到 io

请记住,虽然错误相似,但它们并不相同:

  • TypeError: verify.authSocket(...) is not a function 表示 verify.authSocket返回值不是一个函数功能
  • TypeError: verify.authSocket(...).on is not a function 表示 verify.authSocket返回值不存在没有作为函数的 .on 属性
  • TypeError: verify.authSocket is not a function 表示 verify.authSocket 不是函数
<小时/>

无论如何,io.use 都需要一个函数 作为参数,而您没有传递一个。 verify.authSocket 必须返回一个有效的中间件或者只是一个。

所以只需使用:verify.authSocket而不是verify.authSocket(socket)

io.use(verify.authSocket)
.on('connection', function(socket) {
socket.on('message', function(message) {
io.emit('message', message);
});
});

关于node.js - Node js/socket/verify 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58963253/

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