2017-08-20 29 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开始?

相关问题