不取腳本這是我如何構建它:當我用HTTP替換HTML jQuery的路徑jsdom本地文件系統
<!DOCTYPE HTML>
<html>
<head></head>
<body>
<script src="./js/lib/vendor/jquery.js"></script>
<!-- <script src="http://code.jquery.com/jquery.js"></script> -->
<script type="text/javascript">
var a = $("body"); // script crashes here
var b = "b";
</script>
</body>
</html>
:
var fs = require("fs");
var jsdom = require("jsdom");
var htmlSource = fs.readFileSync("./test.html", "utf8");
var doc = jsdom.jsdom(htmlSource, {
features: {
FetchExternalResources : ['script'],
ProcessExternalResources : ['script'],
MutationEvents : '2.0'
},
parsingMode: "auto",
created: function (error, window) {
console.log(window.b); // always undefined
}
});
jsdom.jQueryify(doc.defaultView, 'https://code.jquery.com/jquery-2.1.3.min.js', function() {
console.log(doc.defaultView.b); // undefined with local jquery in html
});
的HTML它的工作原理。本地路徑完全相對於shell /實際節點腳本的工作目錄。說實話,我甚至不知道爲什麼我需要jQueryify,但沒有它的窗口從來沒有jQuery,即使有它,它仍然需要HTML文檔內的http源。
謝謝,但不幸的是我測試過,不是這樣。即使我使用絕對http路徑,我也無法讓jquery在沒有jQueryify的情況下工作。我也意識到創建的回調是錯誤的,我必須在jsdom調用之後使用doc.defaultView.b。 但腳本似乎總是崩潰。即使我不調用$,沒有jQueryify的任何外部腳本(!)使得b未定義(通過virtualConsole沒有錯誤)。 – brannigan
實際上,如果您提供了juqery包的完整路徑,該程序將起作用。我認爲這是路徑查找器中的問題。 –