错误.无法找到模块'libxmljs&#39.[英] Error: Cannot find module 'libxmljs'

问题描述

我正在尝试使用 phantomjs 为以下文件解析 xml,documentpreviewer1.js

var webPage = require('webpage');
var page = webPage.create();

var url = "http://xxx/sitemap.xml";

page.open(url, function(status){
    if(status != 'success'){
                console.log('Unable to access cfc');
    }
    else
    {
                var xml = page.content;
                var libxmljs = require("libxmljs");
                var xmlDoc = libxmljs.parseXml(xml);

                var url1 = xmlDoc.get('//urlset/url[0]/loc');
                console.log(url1);
    }
});

当我运行上面的代码时,我得到以下错误

cmd sudo phantomjs documentpreivewer1.js

Error: Cannot find module 'libxmljs'

  phantomjs://bootstrap.js:289
  phantomjs://bootstrap.js:254 in require
  documentpreivewer1.js:13
  :/modules/webpage.js:281

推荐答案

libxmljs 是一个 node.js 模块.虽然 phantomjs 可以通过 npm 安装(不需要),但它不是 node.js 模块.它不与 node.js 共享任何内置模块(fs 似乎相同, 但不等于 node.js fs).

您可以在 phantomjs 中使用一些 node.js 模块(有关相关问题,请参阅 使用来自 casperjs 的节点模块),但您似乎不能在 phantomjs 中使用 libxmljs,因为它依赖于使用 fs 和 path 模块的节点绑定.您将不得不更改实现,以便可以使用 phantomjs 功能表达所有依赖项.

另一种方法可能是使用 phantom-nodespookyjs 用于 casperjs node.js 模块.

本文地址:https://www.itbaoku.cn/post/1740128.html