Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从node.js代码调用javascript代码_Javascript_Node.js - Fatal编程技术网

从node.js代码调用javascript代码

从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

我想从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', 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。虽然我可以看到在那里复制事件变得非常令人头痛。