Jsdom 不返回文件

Jsdom not returning document

我正在尝试使用 jsdom 加载本地 HTML 文件,这是代码

var config = {
      file: "filename",
      scripts: ["node_modules/jquery/dist/jquery.min.js"]
      done: function(err, window){
          console.log(window.document.URL)
          console.log(window.document.children)
      }
}
jsdom.env(config)

window.document.URL 显示正确的 url,但 window.document.innerHTML 没有任何数据。我什至试过

var config = {
      text: *raw-html*,
      scripts: ["node_modules/jquery/dist/jquery.min.js"]
      done: function(err, window){
          console.log(window.document.children)
      }
}

但我得到了相同的结果,有什么帮助吗?

更新

我发现

var rawhtml = fs.readFileSync("filename.html","utf8")
jsdom.env(
  rawhtml,
  ["http://code.jquery.com/jquery.js"],
  function (err, window) {
    console.log(window.$("html").html())
  }
);

按预期工作(它记录了 html 标签内的所有内容)

然后我发现

config = {
  file: "filename.html",
  scripts: ["http://code.jquery.com/jquery.js"],
  done: function (err, window) {
    var $ = window.$;
    console.log($("html").html());
  }
} 
jsdom.env(config); 

也可以,但同样无法正确创建 document 对象

“解决方案”

jsdom 不会以与浏览器控制台相同的方式显示 document.children 的输出,但是,您期望的所有功能都在那里。最终工作 document 对象在下面

var func = function(document){
  console.log(document.body.innerHTML)
  document.body.innerHTML = "i changed the body"


}
function getdoc(file, func){
  var document;
  jsdom.env(
    file,
    (err, window) => {
      document = window.document
      func(document)
      }
  );
}
getdoc("index.html",code)

我使用 jsdom.env() 获得 document,然后将 document 传递给 func,所有有趣的 javascript 魔法都可以自由发生。请记住,对 document 所做的任何更改都需要手动保存。

没有document.innerHTML属性。

勾选"innerHTML" in document; - 你会得到 false