1

クラウド機能からファイヤーベースリアルタイムデータベースにアクセスしようとすると、この奇妙なエラーが発生します。これ以上のアイデアは思いつきません修理する。ここに私のコードは次のとおりです。Firebaseのクラウド機能:リアルタイムデータベースからの読み込み時にヘッダーエラーが発生する

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 

admin.initializeApp(functions.config().firebase); 

exports.createNewGame = functions.https.onRequest((request, response) => { 

     return admin.database().ref().once('value').then(function (data) { 
       console.log("BLA"); 
       response.end(); 
     }); 
}); 

とエラー:誰も解決策を見つけることで、正しい方向に私を指すことができる場合

info: User function triggered, starting execution 
info: Execution took 60010 ms, finished with status: 'timeout' 
info: Execution took 60046 ms, finished with status: 'crash' 
error: Something went wrong with the function! 
error: Error: Can't set headers after they are sent. 
    at validateHeader (_http_outgoing.js:504:11) 
    at ServerResponse.setHeader (_http_outgoing.js:511:3) 
    at ServerResponse.header (C:\Users\Thugm\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\express\lib\response.js:730:10) 
    at ServerResponse.send (C:\Users\Thugm\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\express\lib\response.js:170:12) 
    at ServerResponse.json (C:\Users\Thugm\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\express\lib\response.js:256:15) 
    at ProxyServer.Supervisor._proxy.on (C:\Users\Thugm\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\@google-cloud\functions-emulator\src\supervisor\supervisor.js:104:14) 
    at ProxyServer.emit (C:\Users\Thugm\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\eventemitter3\index.js:144:27) 
    at ClientRequest.proxyError (C:\Users\Thugm\AppData\Roaming\npm\node_modules\firebase-tools\node_modules\http-proxy\lib\http-proxy\passes\web-incoming.js:156:18) 
    at emitOne (events.js:115:13) 
    at ClientRequest.emit (events.js:210:7) 

、それは非常に理解されるであろう。乾杯!

答えて

2

HTTP機能を使用すると、他の種類の機能と同様に約束を返せません。 HTTP関数は、クライアントに完全に応答を送信すると終了します。

は、データが読み込まれた後、空の応答を使用して機能を終了しresponse.send("")のようなものを使用してみてください:

exports.createNewGame = functions.https.onRequest((request, response) => { 
    admin.database().ref().once('value').then(function (data) { 
     console.log("BLA"); 
     response.send(""); 
    }); 
}); 
+0

提案いただきありがとうございます、しかし、同じ問題が解消されません。正確に同じエラーメッセージが返されます –

+0

私はその正確な関数コードをデプロイしましたが、問題はありません。 –

+1

おもしろいことに、テストするために私のコンピュータ上でローカルに関数をシミュレートしているのは本当ですか?私は実際にそれをGoogleのサーバーに展開し、それが違いを生むかどうか確認します。これまでのご協力ありがとうございました! –

関連する問題