socket.io 收到错误:“意外的令牌......”

Pab*_*ang 6 node.js socket.io

我从 socket.io 开始,在学习他们的教程时,我遇到了以下错误消息:

/path/to/my/app/node_modules/ws/lib/websocket.js:347
      ...options
      ^^^

SyntaxError: Unexpected token ...
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:549:28)
    at Object.Module._extensions..js (module.js:586:10)
    at Module.load (module.js:494:32)
    at tryModuleLoad (module.js:453:12)
    at Function.Module._load (module.js:445:3)
    at Module.require (module.js:504:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/path/to/my/app/node_modules/ws/index.js:3:19)
Run Code Online (Sandbox Code Playgroud)

这是我的 index.js:

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

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');
});

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

http.listen(3000, function(){
  console.log('listening on *:3000');
});
Run Code Online (Sandbox Code Playgroud)

安装节点,express 和 socket.io。一切正常,直到本教程的这一步。如果我删除io变量,它会再次开始运行。

在谷歌上搜索同样的错误,但找不到任何东西。

Pab*_*ang 10

好像我找到了答案。我会在这里发布给其他有同样问题的人。在不断寻找答案后,我找到了这个链接:

https://github.com/uport-project/uport-cli-client/issues/2

用户 Zachferland 回答了关于省略号 (...) 错误的 OP 问题。

@KamesCG 感谢您的问题!是的,节点中似乎直到 8.2.1(带有标志,然后是 8.6.0)才支持对象扩展运算符。要立即尝试,请运行更高版本的 node,将来我们将更新 uport-js-client 以转译 src 以获得更广泛的 node 版本支持。

然后我检查了我的节点版本:

[root@localhost test]# node -v
v6.17.1
Run Code Online (Sandbox Code Playgroud)

哪个回答了我的问题。当我安装 nodejs 时,我只是运行

yum install nodejs -y
Run Code Online (Sandbox Code Playgroud)

其中安装了旧版本。似乎您必须更新 yum rep。就我而言,我有一台 CentOS7 服务器。我认为 apt 有同样的问题。

遵循本教程后,一切正常。

总而言之,我根据链接运行了以下内容:

yum install -y gcc-c++ make
curl -sL https://rpm.nodesource.com/setup_10.x | sudo -E bash -
sudo yum install nodejs
Run Code Online (Sandbox Code Playgroud)

  • 为了让它对我有用,我之前必须先卸载旧版本的节点。 (3认同)