web-dev-qa-db-ja.com

コマンドラインからのみ構文エラーのJavaScriptコードを確認するにはどうすればよいですか?

JavaScriptプログラムは、IDEまたは オンラインWebアプリ を使用してエラーをチェックできますが、構文エラーを検出する方法を探していますalone

私はJSLintとJSHintを試し、それらのオプションを調べましたが、警告と 構文エラーを表示するだけ を除外する組み合わせを見つけることができませんでした。

JavaScriptコードを確認する方法構文エラーのみコマンドラインから?

40
Dan Dascalescu

解決策は、jshintの--verboseオプション。エラーまたは警告コードを表示します(例:E020 ために Expected '}' to match '{'またはW110 ために Mixed double and single quotes)、エラーの場合のみgrep:

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

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

27
cweiske

JSHintはあなたが望むことをします。 http://www.jshint.com/

表示する警告またはエラーを構成できます。

例:

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

1 error
5
idmean

JavaScriptパーサーはすべて実行する必要があります。@ cweiseが言及するacornは、高速で--silentスイッチ。

Npm esvalidateパッケージの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

継続的インテグレーションシナリオの答えを次に示します。

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;
0
mirza

同様の問題がありましたが、IE8固有の問題を検証し、html、aspx、ascx、cshtmlファイルのjsコードを検証する必要もありました。

簡単なオープンソースコンソールツール(Microsoft.JScript.Compilerに基づく)を作成しました。おそらく役立つでしょう。 JsParser.Cmd

非常に使いやすく、nunitテストでjsコードを検証するのに役立ちます。

0
Alex H