2016-07-06 9 views
3

Ich versuche es6 in meinem Server-Side-Code zu integrieren. Die Verwendung von babel-node funktioniert beim Ausführen des Servers, aber ich habe Probleme beim Kompilieren von Es6 zu Es5-Code, wenn Mocha-Tests ausgeführt werden.Verwendung von Es6 auf Mokkazyklen

Dies ist meine Ordnerstruktur

Ich habe eine server.js, die eine worker.js Datei startet (die den Express-Server hat)

die server.js Datei

import {SocketCluster} from 'socketcluster'; 

const socketCluster = new SocketCluster({ 
    workers:1, 
    brokers:1, 
    port: 3000, 
    appName:null, 
    workerController: __dirname + '/worker.js', 
    brokerController: __dirname + '/broker.js', 
    socketChannelLimit: 1000, 
    crashWorkerOnError: true 
}) 

Die Datei worker.js

Wenn der Server manuell ausgeführt wird, funktioniert es mit dem Bel ow Skript

"start": "nodemon server/server.js --exec babel-node" 

aber wenn ich versuche, die Testdatei mit Mokka läuft Ich erhalte einen ‚unerwarteten Token‚Export‘Fehler‘

(function (exports, require, module, __filename, __dirname) { export const run = (broker) => { 
                   ^^^^^^ 
SyntaxError: Unexpected token export 
    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) 
    at initBrokerServer (/home/avernus/Desktop/projects/node-sc-react/node_modules/sc-broker/server.js:178:25) 
    at process.<anonymous> (/home/avernus/Desktop/projects/node-sc-react/node_modules/sc-broker/server.js:498:9) 

das ist das Skript der Mokka-Tests zu beginnen

"test": "mocha test/server/*.js --compilers js:babel-register" 

bin ich etwas anderes fehlt?

ist dies die Testdatei

import server from '../../server/server'; 
import http from 'http'; 
import assert from 'assert'; 
import {expect} from 'chai'; 

describe('Express server',() =>{ 
    it('should return "Hello World"',() => { 
    http.get('http://127.0.0.1:3000',(res) => { 
     expect(res).to.contain('wtf world') 
    }) 
    }) 
}) 

Antwort

0

Stellt sich heraus, ich brauche eine initController in meiner server.js Datei angeben, um sicherzustellen, dass alle Dateien, die von babel kompiliert werden. Dies ist ein spezifisches Problem für das Websocket-Framework, das ich verwende.

2

Sie benötigen Testskripte ES2015-ES5 transpile Babel verwenden, bevor es zu Mokka vorbei an den Tests auszuführen. Sie können es wie folgt Hinzufügen/Bearbeiten von Testskript in package.json

... 
"scripts": { 
    "test": "mocha --compilers js:babel-core/register --recursive" 
}, 
... 
+0

immer noch der Fehler :(.. Hinzufügen --recursive scheint nicht zu arbeiten – Kannaj

+0

@Kunkka Ich bin wenig überrascht.Ich benutze es und es funktioniert einfach. Bitte überprüfen Sie [diese package.json] (https: // github .com/nmrony/hlsdownloader/blob/master/package.json) paket –

+0

seit npm start scheint mit der gleichen quelle zu arbeiten .. wo sonst denkst du könnte ich falsch liegen? ich denke babel ist nicht richtig kompilieren weitere importe – Kannaj