SpookyJS не имеет метода запуска при использовании его в Meteor

У меня странная ошибка, и я не могу найти ее причину в течение последних нескольких часов...

У меня есть приложение метеора, которое очищает некоторые веб-страницы для получения информации, и все работает нормально, пока я использую reuqest и cheerio для статических страниц, но теперь у меня есть динамический сайт, и я хотел использовать phantomjs, casperjs и spookyjs для этого, но здесь я получаю некоторую ошибку... Мой код выглядит следующим образом, я импортирую модули npm в начале:

    if (Meteor.isServer) {
    var cheerio = Meteor.npmRequire('cheerio');
    var request = Meteor.npmRequire('request');
    var phantomJS = Meteor.npmRequire('phantomjs');
    var spooky = Meteor.npmRequire('spooky');

И через какое-то время я хочу использовать жуткий, чтобы очистить какую-то веб-страницу:

 spooky.start("https://www.coursera.org/");

  spooky.then( function () {
    this.fill("form", {email: user, password: pass}, true);
  });`

Но как только я вызываю метод, я получаю следующее сообщение об ошибке:

    20150224-21:16:39.100(-5)? Exception while invoking method 'getLecturesCoursera' TypeError: Object function Spooky(options, callback) {
    ....
    I20150224-21:16:39.281(-5)? } has no method 'start'
    I20150224-21:16:39.281(-5)?     at [object         Object].Meteor.methods.getLecturesCoursera (app/moocis.js:72:14)

Я делаю что-то совершенно неправильное и понятия не имею, почему это не работает... Я пытался убедиться, что жуткие и фантомные файлы правильно установлены в моем приложении, но это не так просто, как кажется для тех, кто их использует в первый раз...


person Carnivean    schedule 25.02.2015    source источник
comment
Вы установили CasperJS и сможет ли Spooky его найти?   -  person Artjom B.    schedule 25.02.2015
comment
Да, я проверил это. Проблема заключалась в том, что мне пришлось создать новый призрак следующим образом: 'var Spooky = Meteor.npmRequire('spooky'); var spooky = new Spooky({' Теперь это работает как шарм... в основном...   -  person Carnivean    schedule 25.02.2015
comment
Вы можете дать ответ самостоятельно, если вы решили его.   -  person Artjom B.    schedule 25.02.2015


Ответы (1)


Как обычно с жутким, вам нужно создать новый жуткий объект, прежде чем вы сможете запустить и запустить его...

 if (Meteor.isServer) {
  Meteor.startup( function () {
    var Spooky = Meteor.npmRequire('spooky');

    var spooky = new Spooky({
          child: {
              transport: 'http'
          },
          casper: {
              logLevel: 'debug',
              verbose: true,
              ignoreSslErrors: true,
              sslProtocol: 'tlsv1'
          }
      }, function (err) {
          if (err) {
              e = new Error('Failed to initialize SpookyJS');
              e.details = err;
              throw e;
          }

          spooky.start(
              'https://www.google.com');
          spooky.then(function () {
              this.emit('hello', 'Hello, from ' + this.evaluate(function () {
                  return document.title;
              }));
          });
          spooky.run();
      });

      spooky.on('error', function (e, stack) {
        console.error(e);

        if (stack) {
          console.log(stack);
        }
      });

      spooky.on('hello', function (greeting) {
          console.log(greeting);
      });

      spooky.on('log', function (log) {
          if (log.space === 'remote') {
              console.log(log.message.replace(/ \- .*/, ''));
          }
      });
  })
}
person Carnivean    schedule 25.02.2015