2014-07-07 2 views
1

Je suis en train d'analyser XML à l'aide PhantomJS le fichier suivant, documentpreviewer1.jsErreur: Impossible de trouver le module '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); 
    } 
}); 

quand je lance le code ci-dessus, je reçois l'erreur suivante

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 

Répondre

1

libxmljs est un module node.js. Bien que phantomjs puisse être installé via npm (n'a pas besoin d'être) ce n'est pas un module node.js. Il ne partage aucun module intégré avec node.js (fs semble identique, mais n'est pas égal à node.js fs).

Vous pouvez utiliser certains modules Node.js dans PhantomJS (Voir Use a node module from casperjs pour une question connexe), mais il ne semble pas que vous pouvez utiliser dans libxmljs PhantomJS, car cela dépend de noeuds qui utilise des liaisons fs et path modules . Vous devrez changer l'implémentation pour que toutes les dépendances puissent être exprimées avec les capacités de phantomjs.

Une alternative peut être d'utiliser phantom-node ou spookyjs pour un module casperjs node.js.

Questions connexes