You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 18.04运行Node.js Socket.io服务器执行node app.js报错求助

解决Node.js Socket.io启动时的SyntaxError: Unexpected token ...

嘿,这个问题我熟!你遇到的SyntaxError: Unexpected token ...是因为你的Node.js版本太老,不支持ES6的扩展运算符(...),而Socket.io依赖的ws库新版本已经用上了这个语法,旧版本Node根本解析不了。

下面给你两种可行的解决办法,选一个适合你的就行:

方法1:升级Node.js到支持ES6的版本(推荐)

长远来看,升级Node.js是最好的选择,不仅能解决这个问题,还能获得更好的性能和安全性。Ubuntu下可以通过官方源快速升级到LTS版本:

  1. 添加Node.js官方LTS源:
    curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
    
  2. 安装最新的LTS版本Node.js:
    sudo apt-get install -y nodejs
    

安装完后,执行node -v确认版本已经升到v16+或者更高,再运行node app.js应该就能正常启动服务器了。

如果你需要切换多个Node版本,也可以用nvm(Node版本管理器):

sudo apt install nvm
nvm install --lts
nvm use --lts

方法2:降级ws库到兼容旧Node版本的版本

如果暂时没办法升级Node.js,可以把ws库降级到不使用扩展运算符的旧版本。比如ws@7.x系列是兼容Node.js v6及以上的:

  • 直接执行命令安装指定版本:
    npm install ws@7.5.9 --save
    

或者手动修改package.json里的ws版本为^7.5.9,然后运行npm install重新安装依赖。

为啥会出这个错?

从错误栈里的vm.js路径能看出来,你的Node.js版本应该是v6或者更低——这些老版本对ES6新特性的支持非常有限,而扩展运算符是ES6才引入的语法,所以旧Node根本识别不了...options这种写法。

内容的提问来源于stack exchange,提问作者Naresh Yarrsamsetti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 15:12:38