【问题标题】:How can I check JavaScript code for syntax errors ONLY from the command line?如何仅从命令行检查 JavaScript 代码的语法错误?
【发布时间】:2014-03-18 08:15:03
【问题描述】:

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

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

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

【问题讨论】:

标签: javascript syntax-error jslint jshint


【解决方案1】:

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

【讨论】:

  • acorn 不适合我:Error: Cannot find module './_acorn.js'
  • 也可以用apt install node-acorn安装在debian中
【解决方案2】:

解决方案是启用 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,您也可以在从命令行调用它时添加 --maxerr 10000,因为答案似乎已经暗示了。
  • jshint 2.9.4 似乎没有采用“--maxerr”参数——它被删除了吗?
【解决方案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

【讨论】:

  • 如何配置它以显示语法错误,而不是警告?
  • 目前无法禁用 jshint 中的所有警告。您必须在配置文件中一一进行:/
  • 在 Mac OSX 上,可以使用以下命令安装:npm install -g jshint
【解决方案4】:

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

您也可以使用 npm esprima 包中的 esvalidatehttp://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】:

    这是持续集成方案的答案。

    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;
    

    【讨论】:

      【解决方案6】:

      您可以使用节点的内置语法检查选项:

      node --check filename.js
      

      参考:https://nodejs.org/api/cli.html#cli_c_check

      【讨论】:

        猜你喜欢
        • 2017-05-23
        • 2021-11-10
        • 2011-07-13
        • 1970-01-01
        • 1970-01-01
        • 2020-12-02
        • 1970-01-01
        • 1970-01-01
        • 2021-10-14
        相关资源
        最近更新 更多