从nodejs脚本内部解析nodejs

时间:2017-12-21 22:23:35

标签: javascript json node.js parsing

是否可以解析节点js文件并从另一个节点js文件中运行部分代码?

我有一个node.js文件,我试图从另一个node.js脚本中解析。我不控制文件的内容,但它是有效的node.js,并且它总是在代码内部有一个函数: getParameterDefinitions

这是我要解析的文件: https://github.com/jscad/OpenJSCAD.org/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变量中。

1 个答案:

答案 0 :(得分:1)

有些人可能会建议使用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脚本的最外层范围内声明的。