有没有可能解析一个节点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?如何让node解析javascript并运行函数将结果返回到params变量。
发布于 2017-12-22 07:25:37
有些人可能会建议使用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的参数略有不同。)
不过,这仍然是一个糟糕的想法--除非你信任编写代码的人,否则不要这么做。
另外,我假设在src脚本的最外层范围中声明了函数getParameterDefinitions。
https://stackoverflow.com/questions/47933517
复制相似问题