我正在使用 socket.io 并收到此錯誤:
throw new ERR_INVALID_ARG_TYPE(name, 'Function', value);
^
TypeError [ERR_INVALID_ARG_TYPE]: The "listener" argument must be of type function. Received undefined
我正在為套接字上的回呼制作一個控制器,這就是它的外觀:
const { onDisconnect } = require('./app/controllers/socket');
/*
...
*/
io.on('connection', (socket) => {
socket.on('disconnect', onDisconnect(socket));
});
我在“onDisconect”功能上得到了正確的錯誤。但是,如果我這樣宣告函式,它會起作用:
io.on('connection', (socket) => {
socket.on('disconnect', () => {
console.log(`${socket.id} disconnected`);
});
});
我在另一個腳本上有“onDisconect”函式,其中包含:
const onDisconnect = (socket) => {
console.log(`${socket.id} disconnected`);
}
module.exports = { onDisconnect };
uj5u.com熱心網友回復:
那是因為您正在呼叫onDisconnect(),它回傳undefined,它不是一個函式。你有兩個選擇:
- 只需更改
socket.on("disconnect", onDisconnect(socket))為socket.on("disconnect", onDisconnect) - 回傳一個函式
onDisconnect:
function onDisconnect(socket) {
return () => {
console.log(`${socket.id} disconnected`);
};
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/437175.html
標籤:javascript 节点.js 表示 套接字.io
上一篇:如何設定要繪制的排序資料?
