繁体   English   中英

Mocha和ES6,意外令牌(传播运算符)

[英]Mocha and ES6, Unexpected token (spread operator)

我需要你的帮助。 我需要为我的项目编写单元测试(我们使用mocha和nyc来运行测试)运行mocha时出现错误

const payload = { ...obj, vitality };
                      ^^^
SyntaxError: Unexpected token ...
    at createScript (vm.js:74:10)
    at Object.runInThisContext (vm.js:116:10)
    at Module._compile (module.js:533:28)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:503:32)
    at tryModuleLoad (module.js:466:12)
    at Function.Module._load (module.js:458:3)
    at Module.require (module.js:513:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/Volumes/linx/multichannel/optout/test/unit/controller/version.test.js:5:20)

这是我的职责

   const checkVitality = (req,res, obj, uuid) => {
      const vitality = Object.values(obj).reduce((accumulator, currentValue) => accumulator && currentValue ,true);
      const payload = { ...obj, vitality }; // <=======Syntax error
      logger.debug(`vitality check request`, uuid,100, payload);
      return payload;
   };

如果我运行代码,函数会被编译,但是如果我运行测试,则会出现此错误。我尝试连接BABEL,但仍然收到此错误,谢谢!

这里的问题是JavaScript的spread operator尚未成为正式规范的一部分。 因此,您需要使用类似babel

有几种方法可以解决此问题,但是我建议在npm脚本中要求@babel/register

您必须首先通过运行以下命令安装依赖项:

npm install @babel/core --save-dev
npm install @babel/register --save-dev

然后将以下内容添加到package.json

{
   //...
   "scripts": {
      "test": "mocha --require @babel/register ./test/**/*.js"
   }
   //...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM