"SyntaxError: Unexpected token )" in Node.js

"SyntaxError: Unexpected token )" in Node.js

我不断收到以下代码的 SyntaxError: Unexpected token )' 错误:

passport.use(
  'local-signup',
  new LocalStrategy({
      usernameField: 'email',
      passwordField: 'password',
      passReqToCallback: true, // pass back req to callback
    },
    (req, email, password, done) => {
      // ...
    },
  ),
);

它真的是在我放入箭头函数后才开始的。我想我在语法方面遗漏了一些东西。我正在使用 airbnb 风格指南和 linter btw。 运行 Node.js 长期支持。 VS Code 不会在编辑器本身中给出任何解析错误。 代码在通过 Babel 转译为 ES2015 时有效。我仍然很好奇为什么它不能使用 ES6 语法。

问题是您在两个地方使用了 trailing comma in function syntax,即函数最后一个参数后的逗号。

passport.use(
  'local-signup',
  new LocalStrategy({
      usernameField: 'email',
      passwordField: 'password',
      passReqToCallback: true, // pass back req to callback
    },
    (req, email, password, done) => {
      // ...
    },
//   ^
  ),
// ^
);

此语法是 ECMAScript 2017 的一部分,Node.js 8.0.0 之前的版本不支持此语法,但可以使用 Babel 进行转译。