2017-08-20 28 views
0

我正在嘗試使用Firebase開發一個原型。在Firebase中使用雲端函數中的車把

我正在使用Firebase功能。在功能目錄我的package.json文件是:

{ 
    "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 
} 

我index.js文件看起來像:

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() 
    }); 
    }); 

當「的getMessage」功能工作正常,我在執行得到一個錯誤「showMessage」功能它使用第三方模塊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

你在這裏做什麼是創造了一個新的快遞應用程序,並設置其默認視圖引擎HBS:

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

但是,這並不導致雲功能對該應用做任何事情。你剛剛創建的app對象只是坐在那裏,沒有使用。

如果你想使用雲功能明確的應用程序,你也必須通過它傳遞給onRequest:

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

這意味着你還必須在快遞應用程序配置端點所以它知道要服務的URL路徑。

如果您想要使用具有云端功能的車把,您爲什麼不從Firebase團隊的this sample project開始?

相關問題