NodeJS特定语言语法检查器

我最近发现一个名为syntax-checker的npm包( https://www.npmjs.com/package/syntax-checker )

我想将这个到我的JS脚本。 我正在使用一个不和谐的聊天机器人,它检查消息的代码块和编码语言。 正如语法检查器的说明,它支持Ruby,PHP,Perl,Lua,C / CPP,Bash,Javascript和Python。 我将如何将其整合到机器人? 我目前使用js来检查这个脚本

if (message.content.includes("```js")) { let code = message.content.substring('```js '.length); var codebegin = code.split("```js").pop(); var n = codebegin.indexOf('```'); var codeend = codebegin.substring(0, n != -1 ? n : codebegin.length); var check = require('syntax-error'); var err = check(codeend); if (err) { message.reply("Your code contains errors! ```" + err + "```"); } else { message.reply("No Errors!"); } } 

语法检查器通过运行用于编译代码的计算机上的程序(不带输出)并检查是否有任何错误。 它通过分析传入目录中的每个文件然后输出到文件来运行。 您需要为每个请求创build一个临时文件,然后使用shell运行程序(查看child_process或执行此操作)。

所有这些模块最终都是从文件扩展名决定代码是什么语言,并运行诸如exec('php -l file/path/here.php', callbackFunctionHere) 。 这是它运行PHP的,其他人是ruby -cpython -m py_compileperl -cluac -pbash -ngcc -fsyntax_onlyuglifyjs -o /dev/null

有了这些知识,就没有任何文件系统搞乱了。 用exec("echo '" + codeStr + "' | php -l', callbackFunctionHere);php -l换成你需要的任何一个 codeStr 。否则将会出现奇怪的错误。