npm 僵尸将 <head> 内容放入 <body>

npm zombie putting <head> contents inside <body>

我正在使用 zombie to generate HTML snapshots for my MEAN stack single page application, following this tutorial by Angular: http://www.ng-newsletter.com/posts/serious-angular-seo.html

除了一件事,我的快照生成正常。文档<head>的内容在<body>标签里面,不知道为什么。

简而言之,我是这样创建僵尸浏览器的:

var browser = new Zombie({
  waitFor: 3000,
  loadCSS: false,
  runScripts: true
});

然后我访问一个页面,看到 html:

browser.visit("page-url-here").then(function(){
  console.log(browser.html());
});

我得到了这种结构的输出:

<html>
<head></head>
<body>
meta tags, css links, etc here.
</body>
</html>

这些页面的原始代码在 head 标签内正确完成了 head 内容,为什么 zombie 将其移出?

这是由于僵尸依赖项 jsdom 中的一个错误。 jsdom < v2.0 的某些 html 功能存在问题。 jsdom版本在僵尸版本3.0.1-0更新。使用 npm 将 zombie 更新到 3.0.1-0 或更高版本。

npm install zombie@3.0.11.0 当前最新版本。

相关 GitHub 问题:https://github.com/assaf/zombie/issues/847