【发布时间】:2022-01-23 19:04:34
【问题描述】:
所以我在学习 Firebase / React 教程时遇到了一个问题,我刚刚完成了从这里开始的重构部分:https://www.youtube.com/watch?v=m_u6P5k0vP0&t=5590s
一切都很顺利,除了我发布一个新的 Twitter 风格更新的发布功能。并且尝试运行我得到的 firebase 服务器时出现的错误是:
⚠ Error: Route.post() requires a callback function but got a [object Undefined]
at Route.<computed> [as post] (/Users/tmac/Programing/HolbertonFinal/MentorMatchingApp/firebase-fuctions/functions/node_modules/express/lib/router/route.js:202:15)
at Function.app.<computed> [as post] (/Users/tmac/Programing/HolbertonFinal/MentorMatchingApp/firebase-fuctions/functions/node_modules/express/lib/application.js:482:19)
at Object.<anonymous> (/Users/tmac/Programing/HolbertonFinal/MentorMatchingApp/firebase-fuctions/functions/index.js:10:5)
at Module._compile (node:internal/modules/cjs/loader:1097:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1149:10)
at Module.load (node:internal/modules/cjs/loader:975:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Module.require (node:internal/modules/cjs/loader:999:19)
at require (node:internal/modules/cjs/helpers:102:18)
at initializeRuntime (/Users/tmac/.nvm/versions/node/v17.3.0/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:655:29)
⚠ We were unable to load your functions code. (see above)
我会尝试在此处获取相关模块,但如果我遗漏了什么,请告诉我,我可以添加它。我对此很陌生,非常感谢所有帮助!
index.js
const functions = require("firebase-functions");
const app = require('express')();
const { postOneScream } = require('./handlers/screams'); // Not Working
const { signup, login } = require('./handlers/users');
const { FBAuth } = require('./util/fbAuth');
// Scream routes - Testing post functionality for social media feed posts
app.post('/screams', FBAuth, postOneScream); // Error: Route.post() requires a callback function but got a [object Undefined]
// Signup route
app.post("/signup", signup);
// Sign In route
app.post('/login', login);
// export api allows us to use express for our function formating
exports.api = functions.https.onRequest(app);
fbAuth.js
const { admin } = require('./admin');
// Check if user has a token for being logged in
module.exports = (req, res, next) => {
let idToken;
if(req.headers.authorization && req.headers.authorization.startsWith('Bearer ')){
idToken = req.headers.authorization.split('Bearer ')[1];
} else {
console.error('No token found');
return res.status(403).json({error: 'Unauthorized'});
}
admin.auth().verifyIdToken(idToken)
.then(decodedToken => {
req.user = decodedToken;
console.log(decodedToken);
return db.collection('users')
.where('userId', '==', req.user.uid)
.limit(1)
.get();
})
.then(data => {
req.user.handle = data.docs[0].data().handle;
return next();
})
.catch((err) => {
console.error('Error while verifying token', err);
return res.status(403).json({err})
})
}
screams.js
const { db } = require('../util/admin');
exports.postOneScream = (req, res) => {
const newScream = {
body: req.body.body,
userHandle: req.user.handle,
createdAt: new Date().toISOString()
};
db.collection('screams').add(newScream).then((doc) => {
res.json({ message: `document ${doc.id} created successfully` })
})
.catch((err) => {
res.status(500).json({ error: 'something went wrong' });
console.error(err);
})
};
再次感谢您提供的所有帮助,我真的很想学习 webdev,但是男孩有很多东西,每一步只会让我知道我不知道多少:)
【问题讨论】:
标签: javascript node.js firebase