错误:找不到模块' libxmljs'

时间:2014-07-07 02:56:17

标签: phantomjs libxml-js

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

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

您可以在phantomjs中使用一些node.js模块(请参阅Use a node module from casperjs了解相关问题),但似乎您不能在phantomjs中使用libxmljs,因为它依赖于节点绑定使用fspath模块。您必须更改实现,以便可以使用phantomjs功能表达所有依赖项。

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