我的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
ingmocha
作为依赖项运行测试,而不是调用mocha
测试运行程序
因此,如果不是为您的GrunFile添加require('coffee-script/register')
就足够了
简而言之,grunt使用咖啡脚本1.3.x
,强制其所有任务使用同一版本的咖啡。我的express
应用程序中无法使用最新的coffee脚本
,这与grunt contrib connect
有同样的问题
所以,我能给你的唯一帮助是我写的一篇文章,在我的一个项目中解决了类似的问题。它在一个单独的子进程中运行mocha
,从而将它与grunt
完全隔离
N.B.我曾想过将此任务发布到npm
,但认为它太小了。谢谢!我仍然有同样的问题。请看我的更新。