首页 > 解决方案 > Heroku 与其余参数不兼容 ...args

问题描述

Heroku 说: SyntaxError: Unexpected token ...

如何调整此功能以与 heroku 兼容?

authenticate(...args) {
            var authRequest = {};
            authRequest[Eureca.Protocol.authReq] = args;
            this.socket.send(this.serialize(authRequest));
        }

标签: javascriptnode.jsheroku

解决方案


我对 Heroku 不是很熟悉,但你总是可以执行以下操作。Array.prototype.slice.call(arguments)在这种情况下,将达到与使用 rest 运算符相同的效果。

authenticate() {
  const args = Array.prototype.slice.call(arguments);
  var authRequest = {};
  authRequest[Eureca.Protocol.authReq] = args;
  this.socket.send(this.serialize(authRequest));
}

请参阅示例。

function foo1(...args) {
  console.log(args);
}

function foo2() {
  const args = Array.prototype.slice.call(arguments);
  console.log(args);
}

foo1(1, 2, 3, 4);
foo2(1, 2, 3, 4);

而这段代码是foo1通过 babel transpiler 运行函数得到的。

function foo1() {
  for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
    args[_key] = arguments[_key];
  }

  console.log(args);
}

推荐阅读