Hi, it seems that there are errors when adding spiderable to a project that uses observatory. More specifically, running phantomjs with observatory.
Spiderable uses phantomjs.
Opening a meteor site that uses observatory with phantomjs results in js errors.
TypeError: 'undefined' is not a function (evaluating 'this._emitWithSeverity.bind(this,o)')
I can't say I found the exact reason, but repro seems to be 100%. Maybe it's related to some user agent magic or something in phantomjs's javascript agent or the way it handles network connections or something, but anyway I get the error when deploying a simple meteor site and adding only two packages: spiderable (which before adding observatory works) and then observatory.
$ mrt create test
$ cd test
$ mrt add spiderable
$ mrt deploy testing123xxx.meteor.com
$ curl http://testing123xxx.meteor.com/?_escaped_fragment_=
>> OK (page gets rendered)
$ mrt add observatory
$ curl http://testing123xxx.meteor.com/?_escaped_fragment_=
>> timeout. (15 secs later we get a JS bare page instead of an HTML page)
Now writing a phantomjs script and running it shows the actual JS errors
Here's the phantomjs script (copied from spiderable):
var url = "http://testing123xxx.meteor.com/";
var page = require('webpage').create();
page.open(url);
setInterval(function() {
var ready = page.evaluate(function () {
if (typeof Meteor !== 'undefined' &&
typeof(Meteor.status) !== 'undefined' &&
Meteor.status().connected) {
Deps.flush();
console.log(5);
return DDP._allSubscriptionsReady();
}
return false;
});
if (ready) { var out = page.content;
out = out.replace(/<script[^>]+>(.|\n|\r)*?<\/script\s*>/ig, '');
out = out.replace('<meta name="fragment" content="!">', '');
console.log(out);
phantom.exit();
}}, 100);
And now:
$ phantomjs my-phantom-script
TypeError: 'undefined' is not a function (evaluating 'this._emitWithSeverity.bind(this,o)')
I have also tried this with mrt deploy --debug and the same error happens.
Again, I don't see the direct connection (in a regular browser that's OK) but in phantomjs I definitely see the errors and it's 100% repro.
Hi, it seems that there are errors when adding spiderable to a project that uses observatory. More specifically, running phantomjs with observatory. Spiderable uses phantomjs. Opening a meteor site that uses observatory with phantomjs results in js errors.
TypeError: 'undefined' is not a function (evaluating 'this._emitWithSeverity.bind(this,o)')
I can't say I found the exact reason, but repro seems to be 100%. Maybe it's related to some user agent magic or something in phantomjs's javascript agent or the way it handles network connections or something, but anyway I get the error when deploying a simple meteor site and adding only two packages: spiderable (which before adding observatory works) and then observatory.
Now writing a phantomjs script and running it shows the actual JS errors
Here's the phantomjs script (copied from spiderable):
And now:
I have also tried this with
mrt deploy --debug
and the same error happens.Again, I don't see the direct connection (in a regular browser that's OK) but in phantomjs I definitely see the errors and it's 100% repro.