44 votes

Impossible d'exécuter Mocha avec CoffeeScript

Makefile - Contenu :

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

Le répertoire racine du projet contient un dossier de test avec deux fichiers : mocha.opts et example.coffee.

exemple.coffee - Contenu

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

En cours d'exécution make test Je reçois l'erreur suivante :

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)

L'exécution de Mocha avec des fichiers js réussit, mais je n'arrive pas à le faire fonctionner avec CoffeeScript. Je voudrais vraiment le faire - pour la brièveté du code.

Veuillez guider.

88voto

Trevor Burnham Points 43199

À partir de Mocha 1.0 :

coffee-script n'est plus supporté par la boîte. CS et les transpilateurs similaires peuvent être utilisés en faisant correspondre les extensions de fichiers (à utiliser avec --watch) et le nom du module. Par exemple --compilers coffee:coffee-script avec CoffeeScript 1.6- ou --compilers coffee:coffee-script/register avec CoffeeScript 1.7+.

(Citation http://visionmedia.github.io/mocha/#compilers-option ) Donc, vous devez ajouter la ligne

--compilers coffee:coffee-script/register

ou, pour CS <= 1.6.x,

--compilers coffee:coffee-script

à votre mocha.opts fichier.

28voto

Louis Points 13534

À partir de CoffeeScript 1.7, l'option devrait être la suivante :

--compilers coffee:coffee-script/register

Un site numéro a été déposé sur le site github de Mocha.

0 votes

Peut-être mettre à jour ce document pour refléter la v2 et donc l'absence d'un tableau de bord. coffee:coffeescript/register a fonctionné pour moi

2voto

palsch Points 2793

Apparemment, une modification apportée à Mocha en avril 2018 (en douceur) a déprécié l'élément . --compilers option. Dans la ligne de commande, vous obtenez maintenant :

(node:27864) DeprecationWarning : "--compilateurs" sera supprimé dans une future version de Mocha ; voir https://git.io/vdcSr pour plus d'informations

Comme le dit le lien, cela peut être facilement corrigé en n'utilisant pas la fonction --compilers et en utilisant cette nouvelle (simplifiée) mocha.opts options :

--require coffeescript/register

test/*.coffee

La dernière ligne est nécessaire pour faire comprendre à Mocha qu'il doit maintenant utiliser *.coffee comme fichiers de test. Cela ne semble pas être couvert par la --require option.

1voto

André Valenti Points 56

mocha --require coffeescript/register

Fuente: https://github.com/mochajs/mocha/wiki/compilers-deprecation

1voto

5warag Points 21

Avec la dernière mise à jour de mocha, l'instruction require doit être écrite dans le fichier package.json comme suit

  "mocha":{
    "require":"coffeescript",
    "reporter":"spec"
  },

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X