JavaScript程序可以檢查IDE中的錯誤或使用online web apps,但我正在尋找一種方法來檢測語法錯誤單獨。如何才能從命令行檢查JavaScript代碼的語法錯誤?
我試過JSLint和JSHint,看着他們的選擇,但我一直沒能找到一個組合,將排除警告和just shows the syntax errors。
如何從命令行檢查JavaScript代碼僅有語法錯誤?
JavaScript程序可以檢查IDE中的錯誤或使用online web apps,但我正在尋找一種方法來檢測語法錯誤單獨。如何才能從命令行檢查JavaScript代碼的語法錯誤?
我試過JSLint和JSHint,看着他們的選擇,但我一直沒能找到一個組合,將排除警告和just shows the syntax errors。
如何從命令行檢查JavaScript代碼僅有語法錯誤?
的解決方案是使jshint的--verbose
選項,它示出了錯誤或警告代碼(例如E020
爲Expected '}' to match '{'
或W110
爲Mixed double and single quotes
),然後用grep僅用於錯誤:
jshint --verbose test.js | grep -E E[0-9]+.$
如果儘管最終出現了太多的錯誤,但如果出現太多警告和錯誤,退出「消息。您需要設置一個配置文件選項,如maxerr:10000以避免這種情況,這並不理想。 – mynameistechno
@mynameistechno,你可以在命令行調用它時添加--maxerr 10000,因爲答案似乎已經暗示。 –
jshint 2.9.4似乎沒有采用「--maxerr」參數 - 是否被刪除? – erjiang
JSHint做你想做的。 http://www.jshint.com/
您可以配置顯示哪些警告或錯誤。
一個例子:
$ jshint myfile.js
myfile.js: line 10, col 39, Octal literals are not allowed in strict mode.
1 error
我有類似的問題,但也需要驗證IE8的具體問題,並在html,aspx,ascx和cshtml文件中驗證js代碼。
我已經創建了簡單的開源控制檯工具(基於Microsoft.JScript.Compiler),也許它可以幫助你。 JsParser.Cmd
它使用起來非常簡單,它幫助我在nunit測試中驗證js代碼。
任何JavaScript解析器都應該這麼做,acorn
@cweise提到的不錯,因爲它速度很快,並且有一個--silent
開關。
你也可以使用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
esvalidate爲我節省了很多時間。感謝您的建議。 – SomeGuyOnAComputer
這裏是一個持續集成方案的答覆。
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;
然後使用[命令行版本JSLint](https://www.npmjs.org/package/jslint)。 – Quentin
@DanDascalescu比你想要的方式設置驗證規則! http://www.jslint.com/lint.html#options – epascarello
也許是因爲*問題要求我們推薦或找到一個工具,庫或最喜歡的場外資源是堆棧溢出的主題* – DontVoteMeDown