Javascript 从nodejs脚本内部解析nodejs
是否可以解析一个节点js文件并从另一个节点js文件内部运行部分代码 我有一个node.js文件,我正试图从另一个node.js脚本中解析它。我不控制文件的内容,但它是有效的node.js,在代码中始终有一个函数,名为: getParameterDefinitions 以下是我正在尝试解析的文件: 具体来说,我希望从getParameterDefinitions返回的JSON数组作为代码中的变量 以下是我目前拥有的代码: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 =
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)
Itsevil(code)
)顺便说一句,不惜一切代价避免eval
,尤其是在节点中。此代码似乎不起作用,它返回以下内容:[Function:getParameterDefinitions]是的,这是您需要调用的函数。我现在在答案的末尾加上了这一点。