Не удается запустить Mocha с CoffeeScript - PullRequest
44 голосов
/ 30 марта 2012

Makefile - Содержимое:

REPORTER = dot

all: build

build:
    @./node_modules/coffee-script/bin/coffee \
        -c \
        -o lib src

clean:
    rm -rf lib
    mkdir lib

watch:
    @./node_modules/coffee-script/bin/coffee \
        -o lib \
        -cw src

test:
    @./node_modules/mocha/bin/mocha \
        --reporter $(REPORTER) \
        test/*.coffee

.PHONY: build clean watch test

В корневом каталоге проекта есть тестовая папка с двумя файлами: mocha.opts и example.coffee

example.coffee - Содержание

describe "feature", ->
   it "should add two numbers", ->
       (2+2).should.equal 4

При запуске make test появляется следующая ошибка:

cribe 'feature',
      ^^^^^^^^^

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
SyntaxError: Unexpected string
    at Module._compile (module.js:429:25)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Module.require (module.js:354:17)
    at require (module.js:370:17)
    at /home/my_username/testcode/coffeepress/node_modules/mocha/bin/_mocha:261:27
    at Array.forEach (native)
    at load (/home/my_username/testcode/coffeepress/node_modules/mocha/bin/_mocha:258:9)
    at Object.<anonymous> (/home/my_username/testcode/coffeepress/node_modules/mocha/bin/_mocha:249:1)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:40)

Запуск Mocha с js-файлами завершился успешно, но не удалось запустить его с CoffeeScript. Я действительно хочу - для краткости кода.

Пожалуйста, руководство.

Ответы [ 5 ]

90 голосов
/ 30 марта 2012

По состоянию на Mocha 1.0:

coffee-script больше не поддерживается из коробки.CS и аналогичные транспортеры могут использоваться путем сопоставления расширений файлов (для использования с --watch) и имени модуля.Например, --compilers coffee:coffee-script с CoffeeScript 1.6- или --compilers coffee:coffee-script/register с CoffeeScript 1.7 +.

(Цитата http://visionmedia.github.io/mocha/#compilers-option) Итак, вам нужно добавить строку

--compilers coffee:coffee-script/register

или, для CS <= 1.6.x, </p>

--compilers coffee:coffee-script

в файл mocha.opts.

29 голосов
/ 30 января 2014

Начиная с CoffeeScript 1.7, этот параметр должен быть следующим:

--compilers coffee:coffee-script/register

выпуск был подан на сайте Mocha на github.

1 голос
/ 10 июня 2018

Очевидно, что изменение в Mocha, сделанное в апреле 2018 года (мягко), устарело в опции --compilers.Теперь в командной строке вы получите:

(узел: 27864) DeprecationWarning: «--compilers» будет удален в будущей версии Mocha;см. https://git.io/vdcSr для получения дополнительной информации

Как сказано в ссылке, это легко исправить, просто не используя --compilers и используя новые (упрощенные) mocha.opts опции:

--require coffeescript/register

test/*.coffee

Последняя строка необходима, чтобы Mocha понял, что теперь он должен использовать *.coffee файлы в качестве тестовых файлов.Кажется, это не охватывается опцией --require.

0 голосов
/ 09 июня 2018

mocha --require coffeescript/register

Источник: https://github.com/mochajs/mocha/wiki/compilers-deprecation

0 голосов
/ 23 апреля 2014

Мне нужно было внести два изменения в мои аргументы мокко, чтобы это заработало:

--require coffee-script/register
--compilers coffee:coffee-script/register
...