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

请求协助:执行npm start时server.js出现语法错误

解决Node.js中扩展运算符...引发的SyntaxError问题

嘿,我一眼就看出你遇到的是Node.js版本兼容问题导致的语法错误,咱们来一步步搞定它:

问题根源

你在server.js第59行用了ES6的对象扩展运算符...req.body,但当前运行的Node.js版本(从调用栈里的vm.js、module.js版本能看出来)还不支持这个特性,所以直接抛出了SyntaxError: 意外的令牌 ...错误。

两种可行解决方案

方案1:升级Node.js版本(最推荐)

对象扩展运算符在Node.js v8.3.0及以上 才被默认支持(更早版本需要手动开启实验性特性,稳定性差不推荐)。操作步骤:

  • 先查当前Node版本:在终端运行 node -v
  • 去Node.js官网下载安装最新的LTS长期支持版(稳定性拉满)
  • 安装完成后重新执行 npm start,问题应该就解决了

方案2:用Babel转译ES6代码(适合无法升级Node的场景)

如果因为环境限制没法升级Node,就用Babel把ES6代码转译成Node能识别的ES5代码:

  1. 安装Babel相关依赖:
    npm install @babel/core @babel/cli @babel/preset-env @babel/node --save-dev
    
  2. 在项目根目录创建.babelrc配置文件,写入:
    {
      "presets": ["@babel/preset-env"]
    }
    
  3. 修改package.json里的start脚本,用babel-node替代原生node:
    "scripts": {
      "start": "nodemon --exec babel-node server.js"
    }
    
  4. 重新运行npm start,Babel会自动帮你转译代码,兼容旧版Node

快速验证小技巧

你可以先把报错的代码临时换成ES5写法测试:

// 原来的ES6写法
const friend = { id: getNewId(), ...req.body };

// 换成ES5的Object.assign写法
const friend = Object.assign({ id: getNewId() }, req.body);

如果这样运行不报错,就100%确认是扩展运算符的兼容问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:23:36