Windows WSL2环境执行npm run dev报Unexpected token ...语法错误
问题根因
- 当前WSL2环境中使用的Node.js版本为v7.10.1,版本过低:对象扩展运算符
...属于ES2018规范特性,Node.js从v8.3.0版本才开始默认支持该语法,v7.x版本原生无法识别该语法,因此解析moleculer依赖中的相关代码时直接抛出语法错误。 - 该问题和WSL2环境本身无关,其他项目也出现相同报错是因为所有项目都共用了当前的低版本Node.js运行时。
解决方案
推荐方案:升级Node.js版本
你日志中已经使用nvm管理Node版本,可直接通过nvm升级到官方维护的LTS版本(如v16、v18、v20):
- 执行
nvm ls-remote --lts查看所有可用的LTS版本 - 执行
nvm install <LTS版本号>安装指定版本,例如nvm install 18.17.1 - 执行
nvm alias default <安装的版本号>将该版本设置为全局默认版本,避免每次重启终端需要手动切换 - 执行
node -v确认版本切换成功
版本升级完成后操作项目:
- 进入项目目录,删除旧的依赖和锁文件:
rm -rf node_modules package-lock.json yarn.lock pnpm-lock.yaml
- 重新安装依赖:
npm install - 执行
npm run dev即可正常启动项目
临时兼容方案(不推荐)
若确实需要保留v7.x版本的Node.js运行环境,可在启动命令中添加harmony flag开启实验性特性支持,修改package.json中的dev脚本为:
"dev": "node --harmony node_modules/.bin/moleculer-runner --repl services"
注意:v7.x版本已停止维护多年,存在大量安全漏洞,该方案仅可作为临时应急使用,不建议长期采用。
内容的提问来源于stack exchange,提问作者cloudscape-germany
相关产品推荐
相关产品推荐

