Как я могу проверить код JavaScript для синтаксических ошибок ТОЛЬКО из командной строки?
Программы JavaScript могут быть проверены на наличие ошибок в IDE или с помощью сетевых веб-приложений, но я ищу способ обнаружения только синтаксических ошибок.
Я попробовал JSLint и JSHint и посмотрел их варианты, но мне не удалось найти комбинацию, которая исключала бы предупреждения, и просто показывает синтаксические ошибки.
Как проверить код JavaScript для синтаксических ошибок только из командной строки?
Ответы
Ответ 1
Решение состоит в том, чтобы включить параметр jshint --verbose
, который показывает код ошибки или предупреждения (например, E020
для Expected '}' to match '{'
или W110
для Mixed double and single quotes
), тогда grep только для ошибок:
jshint --verbose test.js | grep -E E[0-9]+.$
Ответ 2
Я использую acorn
:
$ acorn --silent tests/files/js-error.js; echo $?
Unexpected token (1:14)
1
$ acorn --silent tests/files/js-ok.js; echo $?
0
Установить через: npm -g install acorn
.
Ответ 3
JSHint делает то, что вы хотите. http://www.jshint.com/
Вы можете настроить, какие предупреждения или ошибки показывать.
Пример:
$ jshint myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.
1 error
Ответ 4
Любой парсер JavaScript должен делать, acorn
, упомянутый @cweise, хорош, потому что он быстрый и имеет переключатель --silent
.
Вы также можете использовать esvalidate
из пакета 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
Ответ 5
У меня была аналогичная проблема, но также необходимо было проверить конкретные проблемы IE8 и проверить js-код в html, aspx, ascx и cshtml файлах.
Я создал простой консольный инструмент с открытым исходным кодом (на основе Microsoft.JScript.Compiler), возможно, он может вам помочь. JsParser.Cmd
Он очень прост в использовании и помогает мне проверять код js в тестах nunit.
Ответ 6
Вот ответ для сценария непрерывной интеграции.
1- Проверяет все файлы JavaScript с папкой исключений, вложенными папками и файлами.
2 Выйти, если есть ошибка.
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;