Подтвердить что ты не робот

Как я могу проверить код JavaScript для синтаксических ошибок ТОЛЬКО из командной строки?

Программы JavaScript могут быть проверены на наличие ошибок в IDE или с помощью сетевых веб-приложений, но я ищу способ обнаружения только синтаксических ошибок.

Я попробовал JSLint и JSHint и посмотрел их варианты, но мне не удалось найти комбинацию, которая исключала бы предупреждения, и просто показывает синтаксические ошибки.

Как проверить код JavaScript для синтаксических ошибок только из командной строки?

4b9b3361

Ответ 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;