ReferenceError:未定义firebase
我正在尝试通过连接到Firebase数据库来在Node.js中测试一个简单的应用程序,但是尽管我已经初始化了Cloud Firebase,但我一直收到此错误。我也做了npm i firebase我缺少什么以及如何解决该错误?
运行应用程序并填写表单并按提交按钮将不会成功。它打印出以下错误。这是完整的错误:
PS C:\ Users \ WorkoutApp_v1>节点app.js警告,缺少FIREBASE_CONFIG和GCLOUD_PROJECT环境变量。初始化firebase-admin将失败服务器在以下端口上启动:3000ReferenceError:未定义firebase在C:\ Users \ WorkoutApp_v1 \ routes \ workouts.js:22:19在Layer.handle上[作为handle_request](C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ layer.js:95:5)在下一个(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ route.js:137:13)在Route.dispatch(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ route.js:112:3)在Layer.handle上[作为handle_request](C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ layer.js:95:5)在C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:281:22在Function.process_params(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:335:12)在下一个(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:275:10)在Function.handle(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:174:3)在路由器上(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:47:12)POST /锻炼/添加500 27.533毫秒-1420
这是我的execution.js文件
const express = require('express');
const router = express.Router();
router.get('/add', function(req,res,next) {
res.render('workouts/add');
});
router.post('/add', function(req,res,next) {
const workout = {
name: req.body.Name,
discription: req.body.Discription,
set: req.body.Set,
RepsTime: req.body.RepsTime
}
// console.log(workout);
// return;
const fbRef = firebase.database().ref();
var dbRef = fbRef.child('workouts');
dbRef.push().set(workout);
req.flash('success_msg', 'Workout saved');
res.redirect('/workouts');
});
module.exports = router;
这是我的app.js文件
const express = require('express');
const path = require('path');
const logger = require('morgan');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const session = require('express-session');
const { check, validationResult } = require('express-validator');
const flash = require('connect-flash');
const firebase = require('firebase');
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
var firebaseConfig = {
apiKey: "AIzaSyC9xvJUIlgoWkS0H4Z3nQ5AXKN2y_Nnt7U",
authDomain: "workout-8g855.firebaseapp",
databaseURL: "",
projectId: "workout-8g855",
storageBucket: "workout-8g855.appspot",
messagingSenderId: "422111087011",
appId: "1:422111087011:web:cd6252c0a00c26428a604c",
measurementId: "G-G3L6FN0J4F"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
// const serviceAccount = require('./serviceAccountKey');
//admin.initializeApp(functions.config().firebase);
// admin.initializeApp({
// credential: admin.credential.cert(serviceAccount)
// });
// Route Files
const routes = require('./routes/index');
const workouts = require('./routes/workouts');
// Init App
const app = express();
// View Engine
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// Logger
app.use(logger('dev'));
// Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
// Handle Sessions
app.use(session({
secret:'secret',
saveUninitialized: true,
resave: true
}));
app.post('/user', [
// username must be an email
check('username').isEmail(),
// password must be at least 5 chars long
check('password').isLength({ min: 5 })
], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
User.create({
username: req.body.username,
password: req.body.password
}).then(user => res.json(user));
});
// Static Folder
app.use(express.static(path.join(__dirname, 'public')));
// Connect Flash
app.use(flash());
// Global Vars
app.use(function (req, res, next) {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
next();
});
// Routes
app.use('/', routes);
app.use('/workouts', workouts);
// Set Port
app.set('port', (process.env.PORT || 3000));
// Run Server
app.listen(app.get('port'), function(){
console.log('Server started on port: '+app.get('port'));
});
回答如下:在execution.js中
您需要添加
const firebase = require('firebase');
您在下一行中称呼它
const fbRef = firebase.database().ref();
ReferenceError:未定义firebase
我正在尝试通过连接到Firebase数据库来在Node.js中测试一个简单的应用程序,但是尽管我已经初始化了Cloud Firebase,但我一直收到此错误。我也做了npm i firebase我缺少什么以及如何解决该错误?
运行应用程序并填写表单并按提交按钮将不会成功。它打印出以下错误。这是完整的错误:
PS C:\ Users \ WorkoutApp_v1>节点app.js警告,缺少FIREBASE_CONFIG和GCLOUD_PROJECT环境变量。初始化firebase-admin将失败服务器在以下端口上启动:3000ReferenceError:未定义firebase在C:\ Users \ WorkoutApp_v1 \ routes \ workouts.js:22:19在Layer.handle上[作为handle_request](C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ layer.js:95:5)在下一个(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ route.js:137:13)在Route.dispatch(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ route.js:112:3)在Layer.handle上[作为handle_request](C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ layer.js:95:5)在C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:281:22在Function.process_params(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:335:12)在下一个(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:275:10)在Function.handle(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:174:3)在路由器上(C:\ Users \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js:47:12)POST /锻炼/添加500 27.533毫秒-1420
这是我的execution.js文件
const express = require('express');
const router = express.Router();
router.get('/add', function(req,res,next) {
res.render('workouts/add');
});
router.post('/add', function(req,res,next) {
const workout = {
name: req.body.Name,
discription: req.body.Discription,
set: req.body.Set,
RepsTime: req.body.RepsTime
}
// console.log(workout);
// return;
const fbRef = firebase.database().ref();
var dbRef = fbRef.child('workouts');
dbRef.push().set(workout);
req.flash('success_msg', 'Workout saved');
res.redirect('/workouts');
});
module.exports = router;
这是我的app.js文件
const express = require('express');
const path = require('path');
const logger = require('morgan');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const session = require('express-session');
const { check, validationResult } = require('express-validator');
const flash = require('connect-flash');
const firebase = require('firebase');
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
var firebaseConfig = {
apiKey: "AIzaSyC9xvJUIlgoWkS0H4Z3nQ5AXKN2y_Nnt7U",
authDomain: "workout-8g855.firebaseapp",
databaseURL: "",
projectId: "workout-8g855",
storageBucket: "workout-8g855.appspot",
messagingSenderId: "422111087011",
appId: "1:422111087011:web:cd6252c0a00c26428a604c",
measurementId: "G-G3L6FN0J4F"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
// const serviceAccount = require('./serviceAccountKey');
//admin.initializeApp(functions.config().firebase);
// admin.initializeApp({
// credential: admin.credential.cert(serviceAccount)
// });
// Route Files
const routes = require('./routes/index');
const workouts = require('./routes/workouts');
// Init App
const app = express();
// View Engine
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// Logger
app.use(logger('dev'));
// Body Parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
// Handle Sessions
app.use(session({
secret:'secret',
saveUninitialized: true,
resave: true
}));
app.post('/user', [
// username must be an email
check('username').isEmail(),
// password must be at least 5 chars long
check('password').isLength({ min: 5 })
], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.status(422).json({ errors: errors.array() });
}
User.create({
username: req.body.username,
password: req.body.password
}).then(user => res.json(user));
});
// Static Folder
app.use(express.static(path.join(__dirname, 'public')));
// Connect Flash
app.use(flash());
// Global Vars
app.use(function (req, res, next) {
res.locals.success_msg = req.flash('success_msg');
res.locals.error_msg = req.flash('error_msg');
res.locals.error = req.flash('error');
next();
});
// Routes
app.use('/', routes);
app.use('/workouts', workouts);
// Set Port
app.set('port', (process.env.PORT || 3000));
// Run Server
app.listen(app.get('port'), function(){
console.log('Server started on port: '+app.get('port'));
});
回答如下:在execution.js中
您需要添加
const firebase = require('firebase');
您在下一行中称呼它
const fbRef = firebase.database().ref();