扩展运算符的NodeJS问题(令牌未扩展)

时间:2019-05-06 10:39:02

标签: node.js

我一直在寻找解决方案已有一段时间,但似乎无济于事。

我已经读到一篇旧文章(Node v6 failing on object spread),指出从节点v8.3开始,此问题已得到解决,但似乎不适用于我。

我对Node.js(v10.15.3)和散布运算符有疑问。实际上,每当我尝试使用它们时,都会出现此错误:

SyntaxError: /Users/gabriele/models/Project.js: Unexpected token (15:8)
  13 |       return {
  14 |         id: res.insertId,
> 15 |         ...newProject
     |         ^
  16 |       };
  17 |     } catch ({ sqlMessage }) {
  18 |       console.log(sqlMessage);
    at Parser.pp$5.raise (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:4454:13)
    at Parser.pp.unexpected (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:1761:8)
    at Parser.pp$3.parseIdentifier (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:4332:10)
    at Parser.pp$3.parsePropertyName (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:4156:96)
    at Parser.pp$3.parseObj (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:4045:12)
    at Parser.pp$3.parseExprAtom (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:3719:19)
    at Parser.pp$3.parseExprSubscripts (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:3494:19)
    at Parser.pp$3.parseMaybeUnary (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:3474:19)
    at Parser.pp$3.parseExprOps (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:3404:19)
    at Parser.pp$3.parseMaybeConditional (/Users/gabriele/Websites/pages-api/node_modules/babylon/lib/index.js:3381:19)

这是我的代码:

...
return {
  id: res.insertId,
  ...newProject

};
...

如果我是console.log(newProject),则为输出:

{ name: 'My test', slug: 'my-test', user_id: 1 }

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

我通过安装transform-object-rest-spread(https://www.npmjs.com/package/babel-plugin-transform-object-rest-spread)进行了修复。

您可以使用npm install --save-dev babel-plugin-transform-object-rest-spread进行安装。

然后您需要添加.babelrc:

  "plugins": [["transform-object-rest-spread", { "useBuiltIns": true }]]

这会神奇。

发生这种情况是因为对象的散布运算符仍处于ecmascript批准的第三阶段。

希望它可以帮助某人!