nodejs从脚本

时间:2016-07-13 07:59:00

标签: javascript node.js jsdom

我在我的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();
    }
});

它产生以下错误: enter image description here

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

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

2 个答案:

答案 0 :(得分:0)

试试这个

var jsdom = require("jsdom");

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

答案 1 :(得分:0)

您尝试的内容存在一些问题:

  1. 通过节点nodejstest.js加载require无法正常使用randomtest功能,因为 nodejstest.js不会导出任何内容。它必须使用randomtest

  2. 之类的内容导出exports.randomtest = randomtest
  3. 您说在配置中使用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();
        }
    });
    

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