问题 使用命令检查JavaScript的语法


是否相当于 perl -c 从命令检查JavaScript的语法?鉴于我安装了NodeJS?

不认为JSLint不是真正的解析器。我认为YUI压缩器是可能的,但我不想在生产机器上安装Java,所以我正在检查Node.JS是否已经提供了这种语法检查机制。


4272
2018-06-14 15:14


起源

试试uglify。你可以通过npm安装它。 - Aadit M Shah
只安装java或其他东西?如果只有java你可以检查 javascriptlint.com - Prusse
在将项目推向生产之前,您不应该检查语法吗?也许甚至在提交之前? - J. K.
@AaditMShah uglify按预期工作,请将此作为答案,以便我可以关闭它。 - Ryan


答案:


尝试 丑化。你可以通过npm安装它。

编辑:包名已更改。它是 丑化-JS


8
2018-06-15 13:36



这可能已经改变了。我收到此错误:npm错误! 404'uglify'不在npm注册表中。 - taco


在进行了进一步的研究之后,我很遗憾没有取消投票。

nodejs --help

解释-p开关:它评估提供的代码并打印结果。因此,使用nodejs -p </path/to/file.js将是一种灾难性的方法来检查服务器上node.js代码的有效性。一种可能的解决方案是指示的 这个 SO线程。有一点不太好 - 它报告的语法错误消息并不是非常有用。例如,它告诉你一些错误但没有告诉你 哪里 这是错误的。


2
2018-03-03 05:36



说实话,我认为你是对的。我认为当我发布我的答案时,行为对我运行的节点版本的行为是正确的。目前我用 js -C <file> 语法检查JS文件,它已经有一段时间了。我删除了我的答案。 - pgl
不幸的是,这使得这个答案没有多大意义。对于那个很抱歉。 - pgl
@pgl node -C <file>?你能解释一下吗?这是服务器端JS语法检查吗?这是V8js的命令行选项吗? - DroidOS
我最初没有意识到这一点,但它看起来像 js 我使用的不是节点本身的一部分。这是在CentOS和 yum provides /usr/bin/js 将此包列为原点: js-1.70-12.el6.x86_64。 (在Ubuntu上, /usr/bin/js 只是一个符号链接 /usr/bin/node。) - pgl
而且,这只是输出 js --version: JavaScript-C 1.7.0 2007-10-03。 - pgl


@Ryan

如果你想像perl(另一种脚本语言)那样执行语法检查,你可以简单地使用。 节点-c

例如一个js文件作为test.js有 -

let x = 30
if ( x == 30 ) {
  console.log("hello");
else {
  console.log( "world");
}

现在输入 node -c test.js 它会告诉你

test.js:5
 else {
 ^^^^
SyntaxError: Unexpected token else
    at startup (bootstrap_node.js:144:11)
    at bootstrap_node.js:509:3

现在修复语法问题后

let x = 30
if ( x == 30 ) {
  console.log("hello");
} else {
  console.log( "world");
}

检查语法 - node -c test.js 将显示没有语法错误!

注意  - 我们甚至可以用它来检查dir中所有文件的语法。 - node -c *.js

希望有所帮助。


1
2018-05-24 22:02



正是我需要的。 - Flimm