繁体   English   中英

Node.js从脚本执行外部功能

[英]nodejs executing external function from script

我在Linux服务器上安装了nodejs和jsdom。

我正在尝试做一些应该很简单的事情,但是我在网上找不到任何简单的教程。

我只是想从外部.js文件( http://yourjavascript.com/64473118216/nodejstest.js )运行功能“ randomtest()”

var jsdom = require("jsdom");
var test = require("./libs/nodejstest.js");

jsdom.env({
    html: "<div></div>",
    done : function (error, window) {
        test.randomtest();
    }
});

它产生以下错误: 在此处输入图片说明

我也尝试通过“脚本”标签为jsdom加载它,但无济于事:

脚本:[“ http://yourjavascript.com/64473118216/nodejstest.js ”],

尝试这个

var jsdom = require("jsdom");

jsdom.env({
    html: "<div></div>",
    scripts: ["./libs/nodejstest.js"],
    done : function (error, window) {
        window.randomtest();
    }
});

您尝试的方法有两个问题:

  1. 通过Node的require加载nodejstest.js无法正常工作,因为nodejstest.js不会导出任何内容randomtest可以使randomtest函数可用 它必须出口randomtest的东西,如exports.randomtest = randomtest

  2. 您说过使用scripts : ["http://yourjavascript.com/64473118216/nodejstest.js"],在配置中不起作用,但实际上可以。 你不会看到控制台上的输出, 因为JSDOM创建窗口本质上是一个新的JavaScript虚拟环境,它有它自己的console从节点的单独的console 您必须在两者之间建立桥梁,如下所示:

     var jsdom = require("jsdom"); var vc = jsdom.createVirtualConsole(); vc.on("log", function () { console.log.apply(console.log, arguments); }); vc.on("jsdomError", function (er) { throw er; }); jsdom.env({ html: "<div></div>", scripts : ["http://yourjavascript.com/64473118216/nodejstest.js"], virtualConsole: vc, done : function (error, window) { window.randomtest(); } }); 

    这样,输出将显示在您的控制台上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM