2
我的代碼,由一種稱爲流星服務器上(對於那些誰不知道流星,它運行在Node.js的頂部):如何從流星的Selenium錯誤中恢復?
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)
})
}
那些熟悉流星知道它應該正常傳播流星錯誤給客戶。相反,硒映入我的錯誤,並與代碼1退出,導致服務器重啓:
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
看來,我順利過關錯誤消息客戶端,我需要防止硒截獲的錯誤。我怎麼做?
有沒有例外可以處理? –
是的,但我需要拋出Meteor.Error,因爲這會導致Meteor將拒絕傳播給客戶端。可以找到解決方法,但這是錯誤通常在Meteor中處理的方式。 –