【发布时间】:2019-01-02 11:20:36
【问题描述】:
我创建了一个使用 React + Firebase + Lambda 函数的项目。
我在前端有 Firebase 代码,我需要一些后端来处理一些事件。 (Prevent users from modifying data in Firebase but allow this data to be updated by the application)
当我使用 Netlify 部署我的应用程序时,我可以通过 netlify-lambda 访问 Amazon Lambda 函数。 (https://www.netlify.com/docs/functions/)
通常一切正常(mailchimp API、snipcart API 等...)
但我无法让 Firebase 正常工作。
我创建了一个具有读写权限的服务帐号。
这里是我的 lambda 函数的代码: (只是一个尝试查看数据库的用户部分的测试。)
import firebaseAdmin from 'firebase-admin'
const serviceAccount = require('../utils/FirebaseServiceAccountKey.json')
export function handler (event, context, callback) {
firebaseAdmin.initializeApp({
credential: firebaseAdmin.credential.cert(serviceAccount),
databaseURL: 'https://sample-3615.firebaseio.com'
})
const db = firebaseAdmin.database()
const ref = db.ref('/users')
let users = {}
ref.once('value', function (snapshot) {
console.log(snapshot.val())
users = snapshot.val()
})
callback(null, {
statusCode: 200,
body: JSON.stringify({ users })
})
}
它返回给我:TypeError: rtdb.initStandalone is not a function。
我也有很多这样的警告:Module not found: Error: Can not resolve 'memcpy' 以及其他包。
我对组件中函数的调用:
handleClick = (e) => {
e.preventDefault()
this.setState({loading: true})
fetch('/.netlify/functions/score')
.then(res => res.json())
.then(json => console.log(json.users))
.then(() => this.setState({loading: false}))
}
我不确定问题出在哪里。网页包?
【问题讨论】:
-
你看到this answer了吗?
-
好的,谢谢!我试过这个解决方案。我按照帖子中的说明修改了 webpack 配置,但不幸的是它不适用于 Gatsby。
标签: firebase aws-lambda netlify