ReferenceError: firebase не определена - в Nodejs / express - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь протестировать простое приложение в Nodejs, подключившись к базе данных Firebase, но продолжаю получать эту ошибку, хотя я инициализировал облачную базу Firebase. Я также сделал npm i firebase Чего мне не хватает и как исправить ошибку?

Запустить приложение, заполнить форму и нажать кнопку подтверждения не удастся. Распечатывает следующую ошибку. Это полная ошибка:

PS C: \ Users \ WorkoutApp_v1> узел app.js
Внимание! Отсутствуют переменные среды FIREBASE_CONFIG и GCLOUD_PROJECT. Инициализация firebase-admin завершится неудачно. Сервер запущен на порту: 3000
ReferenceError: firebase не определен
в C: \ Users \ WorkoutApp_v1 \ rout \ workouts.js: 22: 19
в Layer.handle [as 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: \Пользователи \ WorkoutApp_v1 \ node_modules \ express \ lib \ router \ index.js: 47: 12)
POST / тренировки / добавить 500 27,533 мс - 1420

Это мой файл workout.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.com",
  databaseURL: "https://workout-8g855.firebaseio.com",
  projectId: "workout-8g855",
  storageBucket: "workout-8g855.appspot.com",
  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'));
});

Ответы [ 2 ]

1 голос
/ 09 октября 2019

В workout.js

Вам необходимо добавить

const firebase = require('firebase');

при вызове в следующей строке

const fbRef = firebase.database().ref();
0 голосов
/ 09 октября 2019

В workout.js вы используете

const fbRef = firebase.database().ref();

Но вы никогда не определяете его в этом файле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...