JavaScript programs can be checked for errors in IDEs or using online web apps but I\'m looking for a way to detect syntax errors alone.
I\'ve tried JSLint and
I use acorn:
$ acorn --silent tests/files/js-error.js; echo $?
Unexpected token (1:14)
1
$ acorn --silent tests/files/js-ok.js; echo $?
0
Install via: npm -g install acorn
.
The solution is to enable jshint's --verbose
option, which shows the error or warning code (e.g. E020
for Expected '}' to match '{'
or W110
for Mixed double and single quotes
), then grep for errors only:
jshint --verbose test.js | grep -E E[0-9]+.$
JSHint does what you want. http://www.jshint.com/
You can configure which warnings or errors to show.
An example:
$ jshint myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.
1 error
Here is an answer for a Continuous Integration scenario.
1- Checks all the JavaScript files with exclude folder, subfolder and file features.
2- Exit if there is an error.
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;
Any JavaScript parser should do, acorn
mentioned by @cweise is nice because it is fast and has a --silent
switch.
You could also use esvalidate
from the npm esprima
package: 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