想象一下,我接受了用户的一段代码,只想检查给定的字符串是否是有效的JS?仅从语法角度来看。
function checkCode(x){
// Logic
}
// returns a boolean, whether 'x' is syntactically right or wrong.
我不想使用解决方案eval
,因为当给定代码'x'在语法上是错误的时,整个nodejs进程都会陷入语法错误。
eval
实际上,不要使用与将服务器的控制权移交给公共Internet相同的方式。任何人都可以对您的服务器执行任何操作-删除文件,泄漏文件,发送垃圾邮件等等。当我注意到答案时,我已经收到3票赞成票,这让我感到震惊。
只需使用诸如esprima http://esprima.org/的Javascript解析器
这是一个语法验证器示例,它甚至可以收集多个错误:https : //github.com/ariya/esprima/blob/master/demo/validate.js#L21-L41
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句