J'essaie d'incorporer es6 dans mon code côté serveur. L'utilisation de babel-node fonctionne lors de l'exécution du serveur, mais j'ai des difficultés à compiler le code es6 en code es5 lors de l'exécution des tests mocha.
Voici la structure de mon dossier
J'ai un fichier server.js qui démarre un fichier worker.js (qui contient le serveur express).
le fichier server.js
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
})
le fichier worker.js
export const run = (worker) => {
console.log(' >> worker PID: ',process.pid);
const app = express();
const httpServer = worker.httpServer;
const scServer = worker.scServer;
app.use(cookieParser())
httpServer.on('request', app);
app.get('/',(req,res) => {
console.log('recieved')
res.send('Hello world')
})
}
En exécutant le serveur manuellement, il fonctionne avec le script ci-dessous.
"start": "nodemon server/server.js --exec babel-node"
Cependant, lorsque j'essaie d'exécuter le fichier de test avec mocha, j'obtiens une erreur "unexpected token "export"".
(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)
c'est le script pour démarrer les tests mocha
"test": "mocha test/server/*.js --compilers js:babel-register"
Est-ce que j'ai manqué quelque chose d'autre ?
Voici le fichier de test
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')
})
})
})