我一直在努力在clojurescript的firebase工作,我在这里尝试了以下建议:
How to catch any Javascript exception in Clojurescript?
到目前为止,我的代码是:
(defn register [email password]
(try
(let [reg (.createUserWithEmailAndPassword (.auth firebase) email password)
_ (.log js/console reg)]
reg)
(catch :default e
(.log js/console "Register Error:" e))))正如我所怀疑的,它没有被捕捉到的原因是,评估可能会发生在以后,这是为了测试这个想法。
我也尝试过:
(defn register [email password]
(try
(.createUserWithEmailAndPassword (.auth firebase) email password)
(catch :default e
(.log js/console "Register Error:" e))))我称之为:
(apply register ((juxt :email :password) @app-state))如果我给它一封我已经注册过的电子邮件,我会收到一个auth/email-already-in-use错误,但是我抓不到它。
www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=AIzaSyDzsfz98Y6Pjl1n-uAzfI6GHWKqShFdRI4:1
POST https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=AIzaSyDzsfz98Y6Pjl1n-uAzfI6GHWKqShFdRI4 400 ()
firebase.inc.js:81
Uncaught
Qcode: "auth/email-already-in-use"
message: "The email address is already in use by another account."
__proto__: Error
(anonymous) @ firebase.inc.js:81我怎么抓到它?或者是使用原始javascript来处理这个问题的唯一方法?
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});发布于 2017-02-01 21:41:30
火基是异步的。Javascript的try...catch (通常也包括Clojurescript的)在回调中不起作用。使用错误回调调用Firebase处理程序提供的catch函数,如下所示--这是上面文章中JS代码的直译:
(defn register [email password]
(.. firebase auth (createUserWithEmailAndPassword email password)
(catch (fn [e] (.log js/console "Register Error:" e))))https://stackoverflow.com/questions/41978754
复制相似问题