我在我的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的“scripts”标签加载它,但无济于事:
答案 0 :(得分:0)
试试这个
var jsdom = require("jsdom");
jsdom.env({
html: "<div></div>",
scripts: ["./libs/nodejstest.js"],
done : function (error, window) {
window.randomtest();
}
});
答案 1 :(得分:0)
您尝试的内容存在一些问题:
通过节点nodejstest.js
加载require
无法正常使用randomtest
功能,因为 nodejstest.js
不会导出任何内容。它必须使用randomtest
。
exports.randomtest = randomtest
您说在配置中使用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();
}
});
这样,输出将显示在您的控制台上。