web-dev-qa-db-ja.com

CoffeeScriptでMochaを実行できない

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の2つのファイルを含むテストフォルダーがあります。

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)

JsファイルでMochaを実行すると成功しますが、CoffeeScriptで実行することはできません。私は本当にしたい-コードの簡潔さのため。

ご案内ください。

43
Sameet

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の場合、

--compilers coffee:coffee-script

あなたのmocha.optsファイル。

89
Trevor Burnham

CoffeeScript 1.7以降、オプションは次のようになります。

--compilers coffee:coffee-script/register

issue がMochaのgithubサイトに提出されました。

28
Louis

どうやら、2018年4月に行われたモカの変更により、--compilersオプションが(ソフトに)非推奨になりました。コマンドラインで次のようになります。

(ノード:27864)DeprecationWarning: "--compilers"は、Mochaの将来のバージョンで削除される予定です。詳細は https://git.io/vdcSr を参照してください

リンクが言うように、これは--compilersを使用せず、この新しい(簡略化された)mocha.optsオプションを使用するだけで簡単に修正できます。

--require coffeescript/register

test/*.coffee

最後の行は、Mochaが*.coffeeファイルをテストファイルとして使用することを理解するために必要です。これは--requireオプションではカバーされていないようです。

1
palsch

mocha --require coffeescript/register

ソース: https://github.com/mochajs/mocha/wiki/compilers-deprecation

0
André Valenti

これを機能させるには、モカ引数に2つの変更が必要でした。

--require coffee-script/register
--compilers coffee:coffee-script/register
0
Evan Moran