我们使用Loopback作为REST端点,并有一个端点从数据库中提取JavaScript,然后使用eval在Node实例中的服务器上加载和执行特定功能。我们希望转换为Node的VM功能,但遇到了问题。具体如何:
' eval'基于代码运行良好但似乎已停止使用最新的Node。因此,我们正利用这个机会转换为Node' vm'沙盒。但是,我们在调用嵌入在命名空间中的函数时遇到了麻烦。
view B
答案 0 :(得分:1)
我相信这应该能满足你的需求:
// ********************************
// NEW VERSION ATTEMPTING TO USE 'vm' SANDBOXING.
// ********************************
var Query = require("query");
var vm = require("vm");
export function executeDynamicScriptOnServer(javaScript, callback) {
javaScript += 'onQuery(done)'
// Load the module with the dyanamic script.
vm.runInNewContext(javaScript, vm.createContext({
Query: Query.Query,
done: function(returnData) {
// do stuff with the result
callback(returnData)
}
}));
}