有没有更好的方法来捕获 clojurescript 中的 javascript 错误?
Is there a better way to catch javascript errors in clojurescript?
我一直在 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;
// ...
});
Firebase 身份验证是异步的。 Javascript 的(通常是 Clojurescript 的)try...catch
在回调中不起作用。使用错误回调调用 Firebase 处理程序提供的 catch
函数,就像这样 - 这是上面 post 中 JS 代码的字面翻译:
(defn register [email password]
(.. firebase auth (createUserWithEmailAndPassword email password)
(catch (fn [e] (.log js/console "Register Error:" e))))
我一直在 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;
// ...
});
Firebase 身份验证是异步的。 Javascript 的(通常是 Clojurescript 的)try...catch
在回调中不起作用。使用错误回调调用 Firebase 处理程序提供的 catch
函数,就像这样 - 这是上面 post 中 JS 代码的字面翻译:
(defn register [email password]
(.. firebase auth (createUserWithEmailAndPassword email password)
(catch (fn [e] (.log js/console "Register Error:" e))))