web-dev-qa-db-fra.com

Comment puis-je vérifier le code JavaScript pour les erreurs de syntaxe UNIQUEMENT à partir de la ligne de commande?

Les programmes JavaScript peuvent être vérifiés pour les erreurs dans les IDE ou en utilisant applications Web en ligne mais je cherche un moyen de détecter les erreurs de syntaxe seul .

J'ai essayé JSLint et JSHint et j'ai regardé leurs options mais je n'ai pas pu trouver une combinaison qui exclurait les avertissements et montre juste les erreurs de syntaxe .

Comment puis-je vérifier le code JavaScript pour les erreurs de syntaxe uniquement à partir de la ligne de commande?

40
Dan Dascalescu

La solution consiste à activer l'option --verbose De jshint, qui affiche le code d'erreur ou d'avertissement (par exemple E020 Pour Expected '}' to match '{' Ou W110 Pour Mixed double and single quotes ), puis grep pour les erreurs uniquement:

jshint --verbose test.js | grep -E E[0-9]+.$
17
Dan Dascalescu

J'utilise acorn :

$ acorn --silent tests/files/js-error.js; echo $?
Unexpected token (1:14)
1

$ acorn --silent tests/files/js-ok.js; echo $?
0

Installer via: npm -g install acorn.

27
cweiske

JSHint fait ce que vous voulez. http://www.jshint.com/

Vous pouvez configurer les avertissements ou les erreurs à afficher.

Un exemple:

$ jshint myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.

1 error
5
idmean

Tout analyseur JavaScript devrait faire l'affaire, acorn mentionné par @cweise est Nice car il est rapide et possède un --silent commutateur.

Vous pouvez également utiliser esvalidate à partir du package npm esprima: http://ariya.ofilabs.com/2012/10/javascript-validator-with-esprima.html =

$ npm install -g esprima
$ esvalidate js-file-with-errors.js 
js-file-with-errors.js:1: Invalid left-hand side in assignment
4
ernesto

Voici une réponse pour un scénario d'intégration continue.

1- Vérifie tous les fichiers JavaScript avec les fonctionnalités d'exclusion de dossier, sous-dossier et fichier.

2- Quittez en cas d'erreur.

esvalidate --version || npm install -g esprima;
find ./ -not \( -path ./exclude_folder_1 -Prune \) -not \( -path ./exclude/sub_folder -Prune \) -not \( -path ./exclude/sub_folder_2 -Prune \) ! -name exclude_specified_file.js  -name \*.js -exec esvalidate '{}' \; | grep -v "No syntax errors detected" && echo "Javascript Syntax error(s) detected" && exit 1;
0
mirza

J'ai eu le même problème, mais j'avais également besoin de valider des problèmes spécifiques à IE8 et de valider le code js dans les fichiers html, aspx, ascx et cshtml.

J'ai créé un outil de console open source simple (basé sur Microsoft.JScript.Compiler), peut-être qu'il peut vous aider. JsParser.Cmd

Il est très facile à utiliser et m'aide à valider le code js dans les tests nunit.

0
Alex H