1

J'essaie d'utiliser le mot-clé export dans mon fichier test.js. Le fichier test.js est assez simple. J'ai utilisé karma pour faire les tests. Ma version Chrome est supérieure à 61 comme indiqué dans le journal ci-dessous. La syntaxe export est entièrement prise en charge dans les versions de chrome supérieures à 61, donc le code ci-dessus devrait fonctionner mais il échoue.Impossible d'utiliser le mot-clé export e6 dans Chrome63

$ karma start --browsers Chrome 
01 10 2017 12:29:37.346:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/ 
01 10 2017 12:29:37.350:INFO [launcher]: Launching browser Chrome with unlimited concurrency 
01 10 2017 12:29:37.357:INFO [launcher]: Starting browser Chrome 
01 10 2017 12:29:38.288:INFO [Chrome 63.0.3205 (Mac OS X 10.11.6)]: Connected on socket PV-MAe-R6vm4JntCAAAA with id 24009783 
Chrome 63.0.3205 (Mac OS X 10.11.6) ERROR 
    Uncaught SyntaxError: Unexpected token export 
    at test/test.js:2 

Des suggestions pourquoi cela pourrait-il se produire?

Répondre

2

Pour que les mots-clés spécifiques aux modules ES (import et export) soient correctement interprétés, le script doit être chargé en tant que module. Et Karma doesn't do that.

Même si Karma le prend en charge, les applications réelles reposent sur des éléments qui ne peuvent être gérés correctement que par des bundlers, tels que des packages NPM composés de modules CommonJS/UMD.

Actuellement, les tests impliquant des modules ES doivent être transférés dans Karma.

+0

Merci à @estus pour la réponse. Existe-t-il un autre outil de test prenant en charge les modules ES6? Je ne suis pas vraiment lié au karma et je préférerais juste coller à ES6 pour tout sans ajouter un transpiler si c'est possible. Je ne suis pas familier avec les capacités relatives de 'Karma',' Mocha', 'QUnit' sont. Est-ce que l'un d'entre eux supporte pleinement ES6? Aussi je suppose que je ne comprends pas vraiment quel bundler à utiliser. Est-ce que 'Rollup' est capable de transpiler? – Pushpendre

+0

Mocha ne propose pas de coureur pour les navigateurs. Il y a Jest, mais il est peu probable que cela supporte les modules natifs. Encore une fois, ce n'est pas pratique parce que l'application va s'étouffer avec des modules tiers, et il n'y a aucune chance pour les modules stub/mock/process de le faire nativement. Vous pouvez utiliser Rollup ou Webpack pour transpiler et regrouper l'application, mais la vérité est que ce coureur de test complet (que Karma est) gère cela pour vous. Karma le fait [via un plugin] (https://github.com/babel/karma-babel-preprocessor). – estus