2016-05-22 13 views
0

Ich versuche, das Enzym/Mocha Beispielprojekt bei https://github.com/lelandrichardson/enzyme-example-mocha auszuführen. Ich habe das Projekt von Github geklont und lief npm install. Als ich mocha lief zu dem Projekt alle anderen Änderungen, ohne, das ist der Ausgang I erhalten:Testing mit Enzyme und Mokka - „unerwarteter Token-Import“

/Projects/enzyme-example-mocha/test/Foo-test.js:1 
(function (exports, require, module, __filename, __dirname) { import React from 'react'; 
                   ^^^^^^ 
SyntaxError: Unexpected token import 
    at exports.runInThisContext (vm.js:53:16) 
    at Module._compile (module.js:511:25) 
    at Object.Module._extensions..js (module.js:550:10) 
    at Module.load (module.js:456:32) 
    at tryModuleLoad (module.js:415:12) 
    at Function.Module._load (module.js:407:3) 
    at Module.require (module.js:466:17) 
    at require (internal/module.js:20:19) 

Mein node --version ist v6.1.0 und meine mocha --version ist 2.4.5.

Wie bekomme ich dieses Projekt in etwas Knoten transpile/kann Mocha laufen? Vielen Dank.

Antwort

1

Haben Sie versucht, npm run test? Ich sah das test Skript in package.json (im "scripts" Abschnitt), lief es, und es funktionierte das erste Mal.

Der Unterschied npm run test vs nur mocha ist die ehemalige die Datei test/.setup.js enthält, die babel-register erfordert und führt sie aus, die im Wesentlichen ist, was man einen transpile Schritt über fehlende sagten.

-1

Anscheinend Knoten unterstützt die import und class ES6 Funktionen noch nicht. Sie können src/Foo.js wie folgt umschreiben:

const React = require('react'); 

const propTypes = {}; 

const defaultProps = {}; 

var Foo = React.createClass({ 
    render: function() { 
    return (
     <div className="foo" /> 
    ); 
    } 
}); 

Foo.propTypes = propTypes; 
Foo.defaultProps = defaultProps; 

module.exports.Foo = Foo; 

So werden Ihre Tests gut laufen.

+0

ich Ihre Antwort zu schätzen und während ich den Airbnb Code neu schreiben könnte diese ES6 Funktionen zu vermeiden, nehme ich an, dass es ein Weg gibt, diesen Test zum Laufen zu bringen, wie sie ist - zum Beispiel, vielleicht ist es ein transpiling Schritt, den ich bin fehlt, um diese 'import'-Anweisungen in' require'-Anweisungen umzuwandeln. Ich stoße auf dasselbe Problem bei einem größeren Projekt, an dem ich arbeite, und dachte mir, wenn ich das veröffentlichte Beispiel zum Laufen bringen könnte, könnte ich das Gelernte übernehmen und es in das größere Projekt übertragen. – jay

0

Sie können die Preset 2 Einstellung in Ihrer .babelrc hinzuzufügen.

$ npm install --save-dev babel-preset-stage-2

Fügen Sie die folgende Zeile in die Datei .babelrc:

{ 
    "presets": ["stage-2","react","es2015"] 
} 
+0

Dies sollte nicht benötigt werden. Das Projekt enthält bereits eine '.babelrc'-Datei, die das Airbnb-Preset enthält, was wiederum eine Reaktion sowie die minimale es2015-Unterstützung erfordert. –

+0

@TylerCollier, die nicht auf die Bühne-2-Preset – jruts

+0

Understood enthält. Aber warum 'stage-2' hinzufügen? Es ist unnötig. Sie können 'npm run test' ohne' stage-2' ausführen. –