可以在IDE中使用online web apps检查JavaScript程序是否存在错误,但我正在寻找一种方法来检测语法错误单独。
我已经尝试过JSLint和JSHint并查看了他们的选项,但我找不到排除警告和just shows the syntax errors的组合。
如何从命令行检查JavaScript代码是否仅出现语法错误?
答案 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
包中的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 :(得分: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;