我的coffeescript文件已编译,但mocha给出了一个错误

我的coffeescript文件已编译,但mocha给出了一个错误,coffeescript,gruntjs,mocha.js,Coffeescript,Gruntjs,Mocha.js,我有一个项目在其包.json中使用了“咖啡脚本”:“^1.7.1” 代码中有以下行: [{id: id, name: name}, ...] = result.rows 这可以使用coffeescript 1.7.1版进行很好的编译 问题是,我试图使用mocha进行单元测试,但这一行给了我一个错误: Parse error on line xyz: Unexpected '...' 很明显,摩卡咖啡使用的是一种较旧的咖啡脚本。有没有一种方法可以让它在不调整摩卡咖啡来源的情况下发挥作用 编辑:

我有一个项目在其
包.json
中使用了
“咖啡脚本”:“^1.7.1”

代码中有以下行:

[{id: id, name: name}, ...] = result.rows
这可以使用coffeescript 1.7.1版进行很好的编译

问题是,我试图使用mocha进行单元测试,但这一行给了我一个错误:

Parse error on line xyz: Unexpected '...'
很明显,摩卡咖啡使用的是一种较旧的咖啡脚本。有没有一种方法可以让它在不调整摩卡咖啡来源的情况下发挥作用

编辑:

我的
Gruntfile.coffee

'use strict'

module.exports = ->
  @initConfig
    cafemocha:
      src: ['test/*.coffee']
      options:
        reporter: 'spec'
        ui: 'bdd'

    coffee:
      compile:
        files:
          'lib/mylib.js': ['src/*.coffee']

  @loadNpmTasks 'grunt-cafe-mocha'
  @loadNpmTasks 'grunt-contrib-coffee'

  @registerTask 'default', ['coffee', 'cafemocha']
我在
test
目录中添加了
mocha.opts

--require coffee-script/register
--compilers coffee:coffee-script/register
--reporter spec
--ui bdd

但是,当我运行
grunt
时,仍然会出现相同的错误。我是这个环境的新手,我觉得它太复杂了,请帮助。

从版本
1.7.x开始
CoffeeScript
编译器应该明确注册(请参阅)

因此,问题是当您运行
mocha
测试时,CoffeeScript编译器没有注册,因此
node.js
将所有
.coffee
文件视为
.js
文件

最好的解决方案是为您的摩卡测试指定
--compilers
选项:

--compilers coffee:coffee-script/register
如果您不想在每次
mocha
通话中都包含它,可以使用设置

以下是一些有用的链接:

更新 看来你的问题比我想的要深刻得多

首先,
grunt cafe mocha
不尊重
mocha.opts
,因为它通过
require
ing
mocha
作为依赖项运行测试,而不是调用
mocha
测试运行程序

因此,如果不是为您的GrunFile添加
require('coffee-script/register')
就足够了

简而言之,grunt使用
咖啡脚本1.3.x
,强制其所有任务使用同一版本的咖啡。我的
express
应用程序中无法使用最新的
coffee脚本
,这与
grunt contrib connect
有同样的问题

所以,我能给你的唯一帮助是我写的一篇文章,在我的一个项目中解决了类似的问题。它在一个单独的子进程中运行
mocha
,从而将它与
grunt
完全隔离


N.B.我曾想过将此任务发布到
npm
,但认为它太小了。

谢谢!我仍然有同样的问题。请看我的更新。