从nodejs脚本内部解析nodejs
是否可以解析节点js文件并从另一个节点js文件内部运行部分代码?
我有一个node.js文件,我试图从另一个node.js脚本中解析。我不控制文件的内容,但它是有效的node.js,它总是在代码中有一个函数:getParameterDefinitions
这是我要解析的文件:/blob/master/examples/gear.jscad
具体来说,我希望将getParameterDefinitions返回的JSON数组作为我代码中的变量。
这是我目前的代码:
const fs = require('fs')
inputFile = 'gear.jscad'
let src = fs.readFileSync(inputFile, 'UTF8')
console.log(src)
params = Parse(src,'getParameterDefinitions') //how to write this line?
如何让节点解析javascript并运行函数以将结果返回到params变量中。
回答如下:有些人可能会建议使用eval
。但是有一种稍微清洁的方式:Function
构造函数 - 请参阅here。然后这样做:
const getGetParameterDefinitions = new Function(src + ";\nreturn getParameterDefinitions;");
const getParameterDefinitions = getGetParameterDefinitions();
const params = getParameterDefinitions();
或者这个:
const getParameterDefinitions = new Function(src + ";\nreturn getParameterDefinitions();");
const params = getParameterDefinitions();
(注意:在这两种情况下,Function
的论点略有不同。)
这仍然是一个坏主意 - 除非你相信编写代码的人,否则不要这样做。
另外,我假设函数getParameterDefinitions
是在src
脚本的最外层范围内声明的。