是否可以解析节点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变量中。
答案 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
脚本的最外层范围内声明的。