从node.js代码调用javascript代码
我想从node.js服务器内部的外部源代码运行一些javascript代码并返回结果。 里面的html代码我只会使用从node.js代码调用javascript代码,javascript,node.js,Javascript,Node.js,我想从node.js服务器内部的外部源代码运行一些javascript代码并返回结果。 里面的html代码我只会使用 http:\\address.of.code.com\code.js 如何在node.js内部运行此脚本以获取此脚本的结果并将其返回给调用方 我事先不知道要运行的脚本,它驻留在外部地址中 这个怎么样 var request = require('request'); request('http:\\address.of.code.com\code.js', fun
http:\\address.of.code.com\code.js
如何在node.js内部运行此脚本以获取此脚本的结果并将其返回给调用方
我事先不知道要运行的脚本,它驻留在外部地址中 这个怎么样
var request = require('request');
request('http:\\address.of.code.com\code.js', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
})
最好的问候,Nazar Medeiros我建议查看Node的本机vm模块。以纳扎尔为例:
var vm = require('vm');
var request = require('request');
request('http://address.of.code.com/code.js', function (error, response, body) {
if (!error && response.statusCode == 200) {
var script = vm.Script(body);
var ctxt = {};
script.runInNewContext(ctxt);
console.log(ctxt);
}
});
这将从远程地址提取脚本并运行它,而不会影响提取脚本的代码。以下是虚拟机的文档:可能重复@abc123:Can
require
fetch remote files?@abc123是的,这要求有点不同。我想在你发布的链接中,你的想法是脚本在相同的上下文中,因此在Node的情况下,这通常意味着相同的fs。需要运行脚本,而不是获取脚本。该代码为我获取脚本,但不运行脚本,我将尝试@Christian Grabowski enhancement。@Dani谢谢!介意接受这种情况下的答案吗?当然,我仍然有一个问题-b/c脚本显然需要在浏览器中运行(缺少文档等),但它超出了这个问题的范围…哦,这可能是因为window===节点中未定义的。若你们看一下vm的文档,你们可以定义一个已经定义了全局变量的上下文,这样你们就可以把窗口定义为{}
,这应该没问题。若它是UI的东西,是的,但在理论上,使用vm的上下文你们可以完全伪造dom。虽然我可以看到在那里复制事件变得非常令人头痛。