Ошибка: не удается найти модуль 'libxmljs'

Я пытаюсь разобрать xml, используя phantomjs для следующего файла, 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 ответ

Решение

libxmljs - это модуль node.js. Хотя phantomjs можно установить через npm (не обязательно), это не модуль node.js. Он не разделяет ни один встроенный модуль с node.js (fs кажется, то же самое, но не равно node.js fs).

Вы можете использовать некоторые модули node.js в phantomjs (см. " Использование модуля узла из casperjs" для связанного вопроса), но не похоже, что вы можете использовать libxmljs в phantomjs, потому что это зависит от привязки узла, которая использует fs а также path модули. Вам придется изменить реализацию, чтобы все зависимости могли быть выражены с помощью возможностей phantomjs.

Альтернативой может быть использование фантомного узла или spookyjs для модуля casperjs node.js.

Другие вопросы по тегам