点差运算符的 NodeJS 问题(意外令牌)

Wen*_*igo 4 node.js

我一直在寻找解决方案,但似乎没有任何效果。

我在一篇旧文章(Node v6 在对象传播上失败)中读到,这个问题从 node v8.3 开始已经解决,但它似乎对我不起作用。

我有 Nodejs (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)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

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)
Run Code Online (Sandbox Code Playgroud)

这是输出,如果我console.log(newProject)

{ name: 'My test', slug: 'my-test', user_id: 1 }
Run Code Online (Sandbox Code Playgroud)

有谁能够帮助我?

Wen*_*igo 6

我通过安装 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 }]]
Run Code Online (Sandbox Code Playgroud)

这会变魔术。

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

希望它可以帮助某人!