2014-07-07 169 views
1

我試圖解析使用phantomjs下列文件中的XML,documentpreviewer1.js錯誤:無法找到模塊「libxmljs」

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

libxmljs是一個node.js模塊。雖然phantomjs可以通過npm安裝(不需要),但它不是node.js模塊。它不會與node.js共享任何內置模塊(fs看起來相同,但不等於node.js fs)。

您可以phantomjs(見Use a node module from casperjs一個相關的問題)使用一些Node.js的模塊,但它似乎不喜歡,你可以在phantomjs使用libxmljs,因爲它依賴於它使用fspath模塊節點綁定。您必須更改實現,以便可以使用phantomjs功能來表示所有依賴項。

替代方案可能是使用phantom-nodespookyjs作爲casperjs node.js模塊。