Mein Code, auf Meteor-Server genannt (für diejenigen, die Meteor nicht wissen, läuft es auf der Node.js) von einer Methode:Wie erhole ich mich von Selenium Fehler auf Meteor?
var webdriver = require('selenium-webdriver')
function getPage(page) {
driver = driver || new webdriver.Builder().forBrowser('chrome').build();
driver.get(page).catch(function(error){
throw new Meteor.Error("Can't get page " + page)
})
}
vertraut Diejenigen mit Meteor wissen, dass es normalerweise Meteor propagieren sollte .Error an den Client. Stattdessen fängt Selen meine Fehler und beendet mit Code 1, was zu einem Neustart des Servers:
W20160712-12:49:40.093(-7)? (STDERR)
W20160712-12:49:40.104(-7)? (STDERR) /Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:654
W20160712-12:49:40.104(-7)? (STDERR) throw error;
W20160712-12:49:40.105(-7)? (STDERR) ^
W20160712-12:49:40.105(-7)? (STDERR) Error: [Can't get page i]
W20160712-12:49:40.118(-7)? (STDERR) at imports/somethingSel.js:35:15
W20160712-12:49:40.120(-7)? (STDERR) at ManagedPromise.invokeCallback_ (/Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:1379:14)
W20160712-12:49:40.121(-7)? (STDERR) at TaskQueue.execute_ (/Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:2913:14)
W20160712-12:49:40.123(-7)? (STDERR) at TaskQueue.executeNext_ (/Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:2896:21)
W20160712-12:49:40.124(-7)? (STDERR) at /Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:2775:27
W20160712-12:49:40.132(-7)? (STDERR) at /Users/irinaapex/irina/meteor/selenium/node_modules/selenium-webdriver/lib/promise.js:639:7
W20160712-12:49:40.134(-7)? (STDERR) at /Users/irinaapex/.meteor/packages/promise/.0.8.3-beta.9.1fbal0n++os+web.browser+web.cordova/npm/node_modules/meteor-promise/fiber_pool.js:32:39
=> Exited with code: 1
W20160712-12:49:53.217(-7)? (STDERR) Debugger listening on port 49906
=> Meteor server restarted
Es scheint, dass für mich erfolgreich auf Client-Fehlermeldung passieren, ich brauche Selen zu verhindern, dass der Fehler abfängt. Wie mache ich das?
Gibt es eine Ausnahme, die Sie behandeln können? –
Ja, aber ich muss Meteor.Error werfen, denn das führt dazu, dass Meteor die Ablehnung an den Client weitergibt. Problemumgehungen können gefunden werden, aber so werden normalerweise Fehler in Meteor behandelt. –