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)
这是我的 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');
});
已安装节点、express 和 socket.io。在本教程的这一步之前一切正常。如果我删除io变量,它会再次开始运行。
在谷歌上搜索相同的错误,但找不到任何东西。
解决方案
好像我找到了答案。我会在这里为其他有同样问题的人发帖。在继续寻找答案后,我找到了这个链接:
https://github.com/uport-project/uport-cli-client/issues/2
用户 Zachferland 回答了关于省略号 (...) 错误的 OP 问题。
@KamesCG 感谢您的问题!是的,似乎直到 8.2.1(带有标志,然后是 8.6.0)节点才支持对象扩展运算符。要立即尝试,请运行更高版本的节点,将来我们将更新 uport-js-client 以转换 src 以获得更广泛的节点版本支持。
然后我检查了我的节点版本:
[root@localhost test]# node -v
v6.17.1
这回答了我的问题。当我安装 nodejs 时,我只是运行
yum install nodejs -y
其中安装了旧版本。好像你必须更新 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
推荐阅读
- unity3d - 如何创建带有“噪声”的 2D 背景?统一
- java - NTP 时间戳到 UTC;32 位无符号秒 + 32 位小数字段
- ios - 制作一个 tableView 显示以前的用户输入(在其他视图中)
- three.js - 在three.js中渲染具有部分透明纹理的平面阴影
- jquery - jquery检测已被触摸的子菜单项的id
- rpmbuild - 如何在 rpm 规范文件中检查 RedHat (RHEL) 次要版本?
- sql - 关于构建巨大对象的巨大查询的问题?
- javascript - 使用 Javascript 列出文件路径中的特定目录
- html - 不同文件中相同的 CSS 使页面加载不同
- python-3.x - 如何从范围内生成列表中的随机数