Javascript 从nodejs脚本内部解析nodejs

Javascript 从nodejs脚本内部解析nodejs,javascript,json,node.js,parsing,Javascript,Json,Node.js,Parsing,是否可以解析一个节点js文件并从另一个节点js文件内部运行部分代码 我有一个node.js文件,我正试图从另一个node.js脚本中解析它。我不控制文件的内容,但它是有效的node.js,在代码中始终有一个函数,名为: getParameterDefinitions 以下是我正在尝试解析的文件: 具体来说,我希望从getParameterDefinitions返回的JSON数组作为代码中的变量 以下是我目前拥有的代码: const fs = require('fs') inputFile =

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

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

以下是我正在尝试解析的文件:

具体来说,我希望从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变量中。

有些人可能建议使用
eval
。但是有一种稍微干净一点的方法:
函数
构造函数-请参阅。然后这样做:

const getGetParameterDefinitions = new Function(src + ";\nreturn getParameterDefinitions;");
const getParameterDefinitions = getGetParameterDefinitions();
const params = getParameterDefinitions();
否则:

const getParameterDefinitions = new Function(src + ";\nreturn getParameterDefinitions();");
const params = getParameterDefinitions();
(注意:
函数
的参数在这两种情况下略有不同。)

这仍然是一个坏主意——除非你信任编写代码的人,否则不要这样做


另外,我假设函数
getParameterDefinitions
是在
src
脚本的最外层范围内声明的。

如果您认为代码是安全的,那么使用
eval
。即使使用eval,我如何调用getParameterDefinitions函数?
函数getValues(code){eval(code);返回getParameterDefinitions();}
。然后像这样调用它:
var params=getValues(src)。但前提是你确定src不包含任何有害代码。它不是
eval(code)
Its
evil(code)
)顺便说一句,不惜一切代价避免
eval
,尤其是在
节点中。此代码似乎不起作用,它返回以下内容:[Function:getParameterDefinitions]是的,这是您需要调用的函数。我现在在答案的末尾加上了这一点。