2016-11-25 6 views
1

J'essayais de faire usage de socket Web via socket.io dans un serveur de noeud écrit en tapuscrit avec expressjs. Livré avec webpack.Erreur d'exécution lors de l'utilisation de socket.io dans la classe dactylographiée fournie par webpack

Le code serveur recherche comme suit:

import * as Express from "express"; 
import * as SocketIO from "socket.io"; 
import * as Http from "http"; 

const app = Express(); 

app.get("/", (reqest: Express.Request, response: Express.Response) => { 
    response.sendFile(process.cwd() + "/dist/index.html"); 
}); 

app.use(Express.static("./dist/")); 

const server = app.listen(3210,() => { 
    console.log("Listening to port"); 
}); 

const io = SocketIO.listen(server); 

La dernière ligne provoque les problèmes mentionnés plus tard.

Le webpack.config.js lui correspondant:

module.exports = [ 
    { 
     entry: "./server/main.ts", 
     output: { 
      path: "./dist", 
      filename: "server.js" 
     }, 
     debug: true, 
     devtool: "source-map", 
     module: { 
      loaders: [ 
       { 
        test: /\.ts$/, 
        loader: "ts-loader" 
       } 
       , { 
        test: /\.json/, 
        loader: "json-loader" 
       } 
      ] 
     }, 
     target: "node", 
     node: { 
      fs: "empty", 
      net: "empty" 
     } 
     ts: { 
      configFileName: 'server.tsconfig.json' 
     } 
    } 
]; 

Mais à la fin webpack imprime les avertissements suivants:

WARNING in ./~/express/lib/view.js

Critical dependencies:

78:29-56 the request of a dependency is an expression

@ ./~/express/lib/view.js 78:29-56

WARNING in ./~/socket.io/~/engine.io/lib/server.js

Critical dependencies:

75:43-65 the request of a dependency is an expression

@ ./~/socket.io/~/engine.io/lib/server.js 75:43-65

WARNING in ./~/socket.io/~/engine.io/~/ws/lib/Validation.js

Module not found: Error: Cannot resolve module 'utf-8-validate' in ...\node_modules\socket.io\node_modules\engine.io\node_modules\ws\lib

@ ./~/socket.io/~/engine.io/~/ws/lib/Validation.js 10:19-44

WARNING in ./~/socket.io/~/engine.io/~/ws/lib/BufferUtil.js

Module not found: Error: Cannot resolve module 'bufferutil' in ...\node_modules\socket.io\node_modules\engine.io\node_modules\ws\lib

@ ./~/socket.io/~/engine.io/~/ws/lib/BufferUtil.js 10:19-40

WARNING in ./~/socket.io/~/socket.io-client/~/engine.io-client/~/ws/lib/Validation.js

Module not found: Error: Cannot resolve module 'utf-8-validate' in ...\node_modules\socket.io\node_modules\socket.io-client\node_modules\engine.io-client\node_modules\ws\lib

@ ./~/socket.io/~/socket.io-client/~/engine.io-client/~/ws/lib/Validation.js 10:19-44

WARNING in ./~/socket.io/~/socket.io-client/~/engine.io-client/~/ws/lib/BufferUtil.js

Module not found: Error: Cannot resolve module 'bufferutil' in ...\node_modules\socket.io\node_modules\socket.io-client\node_modules\engine.io-client\node_modules\ws\lib

@ ./~/socket.io/~/socket.io-client/~/engine.io-client/~/ws/lib/BufferUtil.js 10:19-40

Process terminated with code 0.

de Running résultats dans:

fs.js:549 return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);

TypeError: path must be a string

....

Est-ce que quelqu'un sait ce que j'ai mal fait?

+0

Essayez comme ceci 'const io = SocketIO (serveur)' – Thaadikkaaran

+0

J'ai essayé, mais cela m'a donné une erreur de temps de transpile. Peut-être que le fichier de définition de type "socket.io": "registry: dt/socket.io # 1.4.4 + 20160909205835" est coruppted. –

+0

Montrez-nous ce que l'on appelle «l'erreur de temps transpile» – Thaadikkaaran

Répondre

0
import * as SocketIO from "socket.io"; 

devrait être:

import SocketIO from "socket.io-client";