2017-10-16 6 views
0

J'ai écrit un module npm que j'essaie d'utiliser avec Travis CI. Mes tests ont été écrits en Jest et tous passent quand je les lance depuis ma ligne de commande locale.Jest et travis CI, "SyntaxError: mot réservé en mode strict inattendu"

Cependant, quand je les télécharger sur github (https://github.com/jaysaurus/echo-handler), travis exécute mon code et recrache l'exception suivante:

0.69s$ npm test 

> [email protected] test /home/travis/build/jaysaurus/echo-handler 

> jest __tests__/*.js 

/home/travis/build/jaysaurus/echo-handler/node_modules/jest/node_modules/jest-cli/build/cli/index.js:1 

sModule", { value: true });exports.runCLI = exports.run = undefined;let run = 

                   ^^^ 

SyntaxError: Unexpected strict mode reserved word 
at Module._compile (module.js:439:25) 
at Object.Module._extensions..js (module.js:474:10) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 
at Module.require (module.js:364:17) 
at require (module.js:380:17) 
at Object.<anonymous> (/home/travis/build/jaysaurus/echo-handler/node_modules/jest/node_modules/jest-cli/bin/jest.js:13:1) 
at Module._compile (module.js:456:26) 
at Object.Module._extensions..js (module.js:474:10) 
at Module.load (module.js:356:32) 

npm ERR! Test failed. See above for more details. 

je me suis demandé si ma construction était à la recherche dans le répertoire/node_modules par accident. .gitignore a été configuré pour ignorer/node_modules et j'ai même essayé de configurer mon package.json pour exécuter explicitement: "test": "jest __tests__/*.js", mais j'ai toujours la même erreur

est-ce un bug dans jest/la version de jest sur Travis CI/La mise en œuvre de Travis CI de jest? Si oui, y a-t-il une solution? Alternativement (et beaucoup plus probable) ai-je manqué quelque chose d'évident?

Répondre

1

Vous n'avez pas spécifié de version Node.js dans votre .travis.yml et il semble y avoir installed version 0.10.48. À l'époque, let n'était pas pris en charge et une erreur s'est produite lorsque vous avez essayé d'utiliser un de ces mots réservés (au moins en mode strict). Vous devez toujours utiliser specify the Node.js versions pour l'exécuter.

Par exemple, si vous voulez exécuter uniquement sur la dernière version 8.x, utilisez la configuration suivante:

language: node_js 
node_js: 
    - "8" 
+0

travaillé pour moi! Merci beaucoup! –