Socket.io Typescript中未定义全局变量
我正在尝试使用typescript创建从服务器到客户端的socket.io连接,为此我需要在构造函数中定义“socket”对象,以便该对象可以使用socket向客户端发送数据。但是,当编译为javascript时,套接字对象不会被定义为该类的变量,这会阻止调用它 这是打字稿 导出类上载{Socket.io Typescript中未定义全局变量,socket.io,typescript,Socket.io,Typescript,我正在尝试使用typescript创建从服务器到客户端的socket.io连接,为此我需要在构造函数中定义“socket”对象,以便该对象可以使用socket向客户端发送数据。但是,当编译为javascript时,套接字对象不会被定义为该类的变量,这会阻止调用它 这是打字稿 导出类上载{ directory = "./data"; socket: Socket; constructor(socket:Socket) { this.socket = socket; } public u
directory = "./data";
socket: Socket;
constructor(socket:Socket) {
this.socket = socket;
}
public upload(req:express.Request, res) {
this.socket.emit('fileReceivedConfirmation', {
successful:true,
filePath: filePath,
originalName: originalFileName
});
}
下面是相应的javascript
function Upload(socket) {
this.directory = "./data";
this.socket = socket;
}
Upload.prototype.upload = function (req, res) {
this.socket.emit('fileReceivedConfirmation', {
successful: true,
filePath: filePath,
originalName: originalFileName
});
}
socket变量没有在编译的Javascript中的任何地方定义,这会在函数调用socket时产生此错误
C:\Users\Me\WebstormProjects\Core\lib\Upload.js:43
this.socket.emit('fileReceivedConfirmation', {
^
TypeError: Cannot call method 'emit' of undefined
尝试更改以下代码
io.sockets.on('connection', function (socket) {
this.socket = socket;
});
对此
io.sockets.on('connection', (socket:any):void => {
this.socket = socket;
});
我将变量转换为静态变量,它起作用了:
directory = "./data";
static socket:Socket;
constructor(socket:Socket) {
console.log("Creating socket");
Upload.socket = socket;
}
抱歉,问题已更改。请检查问题。谢谢。错误表明您没有为
socket
参数指定任何值。如何初始化上载构造函数?