node.js:使用es6

时间:2018-10-22 19:34:26

标签: node.js ecmascript-6 socket.io

我正在使用es6脚本编写示例代码来处理node.js中的套接字连接,在导入socket.io时会引发错误

import {
  PORT
} from './config';

import express from 'express';
import io from 'socket.io';

var app = express();

// respond with "hello world" when a GET request is made to the homepage
app.get('/', function(req, res) {
  res.send('hello world')
});

io.on('connection', function(socket) {
  console.log('a user connected');
});

app.listen(PORT, () => console.log(`Example app listening on port ${PORT}!`));

错误是

  

/index.js:17   _socket.default.on('connection',function(socket){                   ^

     

TypeError:_socket.default.on不是函数       在Object.on(/Users/digvijay.upadhyay/digvijayu/websocket_with_node/src/index.js:15:4)       在Module._compile(module.js:643:30)       在Module._compile(/Users/digvijay.upadhyay/digvijayu/websocket_with_node/node_modules/pirates/lib/index.js:83:24)       在Module._extensions..js(module.js:654:10)       在Object.newLoader [作为.js](/Users/digvijay.upadhyay/digvijayu/websocket_with_node/node_modules/pirates/lib/index.js:88:7)       在Module.load(module.js:556:32)       在tryModuleLoad(module.js:499:12)       在Function.Module._load(module.js:491:3)       在Function.Module.runMain(module.js:684:10)       在对象。 (/用户/digvijay.upadhyay/digvijayu/websocket_with_node/node_modules/@babel/node/lib/_babel-node.js:224:23)   [nodemon]应用程序崩溃-等待文件更改,然后再开始...   使用Babel成功编译了2个文件。成功编译2   Babel保存文件。

1 个答案:

答案 0 :(得分:1)

您需要调用函数require('socket.io')()并在其中传递一个表达实例。

请查看添加的代码示例:

const express = require('express');
const http = require('http');
const socketIO = require('socket.io');

const app = express();
const server = http.createServer(app);
// this line \/
const io = socketIO(server);
// this line /\


io.on('connection', (socket) => {
    //...
});

server.listen(port, () => {
    //...
});