我在節點應用程序中遇到了一些來自Firebase Web的錯誤回調問題。Firebase Web 2.4.0 Nodejs中的承諾
原來的問題是,從.SET錯誤回調顯然沒有被我希望它是被解僱。
在調試過程中,我的火力地堡NPM模塊升級到最新的2.4.0(0.10.28的NodeJS),然後注意到,有異步調用一個新的承諾的語法。
我沒有找到使用新語法的例子,但做fiddle,似乎在我的預期在瀏覽器中的工作方式。
var fb = new Firebase("https://katowulf-examples.firebaseio.com/");
// monitors changes and updates UI
try {
fb.child('sorted_widgets').orderByChild('name').equalTo('one').once('value').then(handleSuccess).catch(handleError)
fb.child(undefined).once('value').then(handleSuccess).catch(handleError)
fb.child('sorted_widgets').set(undefined).then(handleSuccess).catch(handleError)
} catch (err) {
console.error('Caught an error', err)
}
function handleSuccess(snap) {
console.log('snap: ', snap.val())
}
function handleError(err) {
console.log('error:', err)
}
我現在正在嘗試使用語法,我節點應用程序時遇到這個錯誤:
TypeError: Object #<nb> has no method 'catch'
at myFunction (/node_scripts/my_script.js:514:19)
at c (/node_modules/firebase/lib/firebase-node.js:238:58)
at /node_modules/firebase/lib/firebase-node.js:199:710
at ec (/node_modules/firebase/lib/firebase-node.js:52:165)
at ac (/node_modules/firebase/lib/firebase-node.js:31:216)
at bc (/node_modules/firebase/lib/firebase-node.js:30:1259)
at Ii.h.Ib (/node_modules/firebase/lib/firebase-node.js:218:287)
at Qh.h.Jd (/node_modules/firebase/lib/firebase-node.js:185:251)
at Eh.Jd (/node_modules/firebase/lib/firebase-node.js:175:364)
有一件事我在擺弄注意到的是,不是所有的錯誤都是由.catch抓()。我把Javascript Try Catch放在小提琴上來演示,但它確實是一個單獨的問題。
鑑於我遇到的問題上面的問題,我想知道是否有與我的節點安裝了錯事,所以重新安裝節點,並刪除並重新安裝我的node_modules。我還沒有取得任何進展。
是否有人得到了新的承諾語法節點的工作?有什麼建議嗎?
也許你的節點版本沒有實現承諾'.catch'函數,但瀏覽器。如果不瞭解更多關於節點設置的信息,很難說。 有一件事要嘗試的是拉入一個單獨的庫來處理承諾。藍鳥是受歡迎的。嘗試做'npm install bluebird',然後在使用承諾'Promise = require(「bluebird」)''的文件的頂部。 –
你*很可能是正確的@AlexKlibisz。你能否提供這個答案作爲答案,以便我可以放棄它? –
我在代碼中廣泛使用承諾,'es6-promise',所以我不認爲這是問題所在。 – kpg