如何仅从命令行检查JavaScript代码的语法错误?

时间:2014-02-18 14:00:40

标签: javascript syntax-error jslint jshint

可以在IDE中使用online web apps检查JavaScript程序是否存在错误,但我正在寻找一种方法来检测语法错误单独

我已经尝试过JSLint和JSHint并查看了他们的选项,但我找不到排除警告和just shows the syntax errors的组合。

如何从命令行检查JavaScript代码是否仅出现语法错误

6 个答案:

答案 0 :(得分:26)

我使用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

答案 1 :(得分:17)

解决方案是启用jshint的--verbose选项,该选项会显示错误或警告代码(例如E020 Expected '}' to match '{'W110 Mixed double and single quotes }}),然后grep只有错误:

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

答案 2 :(得分:5)

JSHint做你想要的。 http://www.jshint.com/

您可以配置要显示的警告或错误。

一个例子:

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

1 error

答案 3 :(得分:4)

任何JavaScript解析器都应该这样做,@ cweise提到的acorn很好,因为它很快并且有一个--silent开关。

您还可以使用npm esvalidate包中的esprimahttp://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 :(得分:0)

我有类似的问题,但也需要验证IE8的具体问题并验证html,aspx,ascx和cshtml文件中的js代码。

我创建了简单的开源控制台工具(基于Microsoft.JScript.Compiler),也许它可以帮到你。 JsParser.Cmd

它非常易于使用,它帮助我在nunit测试中验证js代码。

答案 5 :(得分:0)

以下是持续集成方案的答案。

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;