Heroku不兼容剩余参数...args,如何调整函数实现兼容?
解决Heroku上的SyntaxError: Unexpected token ...问题
这个问题我碰到过不少次,本质是Heroku上运行的Node.js版本可能比较旧,不支持ES6的剩余参数语法(就是你代码里用的...args)。咱们把代码改成ES5兼容的写法就能解决,具体调整如下:
修改后的代码
authenticate() { var args = Array.prototype.slice.call(arguments); var authRequest = {}; authRequest[Eureca.Protocol.authReq] = args; this.socket.send(this.serialize(authRequest)); }
关键调整说明
- 去掉了函数参数里的
...args:旧版本Node.js不支持ES6的剩余参数语法,改用JS原生的arguments对象来获取所有传入的参数 - 新增
var args = Array.prototype.slice.call(arguments);:arguments是一个类数组对象,通过这行代码把它转换成真正的数组,这样后续的赋值逻辑和原代码功能完全一致 - 其余逻辑保持不变:依然创建
authRequest对象并序列化发送,确保功能不受影响
这样修改后,你的authenticate函数就能在Heroku的旧Node.js环境下正常运行,不会再出现语法错误了。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

