2017-08-20 9 views
0

Firebaseを使用してプロトタイプを開発しようとしています。Firebaseのクラウド機能でハンドルバーを使用する

私はFirebase機能を使用しています。機能ディレクトリ内のマイpackage.jsonファイルがある:私のindex.jsファイルがどのように見える

{ 
    "name": "functions", 
    "description": "Cloud Functions for Firebase", 
    "dependencies": { 
    "express": "^4.15.4", 
    "firebase-admin": "~4.2.1", 
    "firebase-functions": "^0.5.7", 
    "hbs": "^4.0.1" 
    }, 
    "private": true 
} 

:「のgetMessage」機能が正常に動作している間

const functions = require('firebase-functions'); 
const express = require('express'); 
const hbs = require('hbs'); 

var app = express(); 
app.set('view engine', hbs); 

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

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

exports.getMessages = functions.https.onRequest((req, res) => { 
    var abc = admin.database().ref('/messages').on("value", function(snapshot) { 
     res.send(snapshot.val()); 
     }, function (errorObject) { 
     console.log("The read failed: " + errorObject.code); 
     }); 

    }); 

    exports.showMessage = functions.https.onRequest((req, res) => { 
    res.render('about.hbs' , { 
     pageTitle : 'About Page', 
     currentYear : new Date().getFullYear() 
    }); 
    }); 

「showMessage」機能を実行しながら、私はエラーを取得しますサードパーティのモジュールHBSを使用します。

機能ログとは何あなたがここにやったことは新しい特急アプリを作成し、HBSにデフォルトのビューエンジンを設定されている

Error: Cannot find module 'hbs' 
    at Function.Module._resolveFilename (module.js:469:15) 
    at Function.Module._load (module.js:417:25) 
    at Module.require (module.js:497:17) 
    at require (internal/module.js:20:19) 
    at new View (/var/tmp/worker/node_modules/express/lib/view.js:50:49) 
    at EventEmitter.app.render (/var/tmp/worker/node_modules/express/lib/application.js:545:12) 
    at ServerResponse.res.render (/var/tmp/worker/node_modules/express/lib/response.js:938:7) 
    at exports.showMessage.functions.https.onRequest (/user_code/index.js:46:9) 
    at cloudFunction (/user_code/node_modules/firebase-functions/lib/providers/https.js:26:47) 
    at /var/tmp/worker/worker.js:635:7 

答えて

4

を示しています。

var app = express(); 
app.set('view engine', hbs); 

しかし、それはクラウド機能を生じませんそのアプリで何かをする。ちょうどあなたが作成したappオブジェクトはただそこに座っていて、使用されていません。あなたはクラウド機能を持つ特急アプリを使用したい場合は

、あなたはまた、onRequestに沿って、それを渡す必要があります:

exports.app = functions.https.onRequest(app); 

これはあなたもそう急行アプリ上でエンドポイントを設定する必要があります意味しますサービスするURLパスを知っています。

クラウド機能でハンドルバーを使用する場合は、Firebaseチームのthis sample projectで始めるのはなぜですか?

関連する問題