2016-08-18 42 views
0

我想這個經典的實現了expressjs服務器與socketio:Express服務器和WITH打字稿socketio :) ==>「服務器」上不存在型「應用」

this.app = express(); 
    this.server = http.createServer(this.app); 
    this.io = socket(this.server); 

但打字稿那些扔錯誤:

src/server/ts/app.ts(23,38): error TS2345: Argument of type 'Application' is not assignable to parameter of type '(request: IncomingMessage, response: ServerResponse) => void'. 
src/server/ts/app.ts(24,8): error TS2339: Property 'io' does not exist on type 'App'. 
src/server/ts/app.ts(24,25): error TS2339: Property 'server' does not exist on type 'App'. 

我應該如何管理?處理這個問題的正確方法是什麼?

+0

我注意到,有沒有理由的倒退。我的用法不適合你嗎? –

+0

那麼這與打字稿無關 –

+0

哦,我明白了。你正試圖從typescript編譯你的app.js。我從來沒有見過任何人嘗試傳輸快速服務器。我的道歉 在頁面頂部嘗試 var io:any; 並可能重複你的其他缺失變量 –

回答

-1

看來您的其他問題在此之後發佈,這是否仍然相關?

好吧,讓我們看看什麼工作完成。我把套接字分成了一個配置文件,因爲我的app.js變得混亂了。

app.use(express.static(path.join(__dirname, '/'))); 

app.use(express.static(path.join(__dirname, '/node_modules/'))); 

    var clients = {}; 

var server = http.createServer(app); 
var io = require('socket.io')(server); 

require('./config/app.socket.js')(io); 
server.listen(8001); 
io.set("origins", "*:*"); 

所以,我剪掉了中間人,並將服務器直接傳遞給socket.io導入。那麼,我引用到IO服務器傳遞給我的app.socket.js文件,並聽取了服務器的端口8001

這裏是我的app.socket.js初始化

module.exports = function(io){ 
    var clients = {}; 

    var sockets; 

    io.on('connection', function (socket) { 
    sockets = socket; 

    socket.on(//your socket function) 

} 
+0

這個答案根本沒有幫助。原來的問題是關於Typescript。 –

+0

我記得有一個原因,我在這裏發佈了關於他以前提出的另一篇文章,但我同意。林不知道爲什麼我發佈這個。 –

相關問題