Javascript 未处理的拒绝(错误):请求失败,状态代码为500

Javascript 未处理的拒绝(错误):请求失败,状态代码为500,javascript,node.js,reactjs,firebase,webstorm,Javascript,Node.js,Reactjs,Firebase,Webstorm,我是react and node的初学者,希望通过firebase制作一个简单的react and node登录应用程序。注册和登录工作,但令牌不工作,请帮助修复错误。所有代码如下所示 提前谢谢 前端 App.js import React, {Component} from 'react'; import {BrowserRouter as Router, Route} from 'react-router-dom'; import firebase from 'firebase'; imp

我是react and node的初学者,希望通过firebase制作一个简单的react and node登录应用程序。注册和登录工作,但令牌不工作,请帮助修复错误。所有代码如下所示

提前谢谢

前端

App.js

import React, {Component} from 'react';
import {BrowserRouter as Router, Route} from 'react-router-dom';
import firebase from 'firebase';

import Home from './components/Home'
import Login from './components/user/Login';
import 'bootstrap/dist/css/bootstrap.css'
import axios from 'axios';

class App extends Component {

    constructor(props) {
        super(props);
        this.state = {
            loaded: false
        }
    }

    componentDidMount() {
        firebase.auth().onAuthStateChanged(user => {
            if (!user) {
                this.setState({loaded: true})
            } else {
                firebase.auth().currentUser.getIdToken(true)
                    .then(idToken => {
                        console.log("id : " + firebase.auth().currentUser.uid + "idToken : " + idToken);
                        axios.post('http://127.0.0.1:3005/api/user/verify', null, {
                            params: {
                                user: firebase.auth().currentUser,
                                idToken
                            }
                        }).then(result => {
                            console.log(result)
                        })
                    })
                this.setState({loaded: true})
            }
        })
    }

    render() {
        if (this.state.loaded) {
            return (
                <Router>
                    <Route path="/" exact component={Home}/>

                    <Route path="/login" component={Login}/>

                </Router>
            )
        }
        return (
            <div>
                Loading....
            </div>
        )

    }
}

export default App;
import React, {Component} from "react";
import {Link} from "react-router-dom";
import NavBar from "../NavBar";
import * as firebase from "firebase";
import {Redirect} from "react-router-dom";

var firebaseConfig = {
    apiKey: "*****************************",
    authDomain: "*****************************",
    databaseURL: "*****************************",
    projectId: "*****************************",
    storageBucket: "*****************************",
    messagingSenderId: "*****************************",
    appId: "*****************************",
    measurementId: "*****************************"
};
firebase.initializeApp(firebaseConfig);

class Login extends Component {

    constructor(props) {
        super(props);
        this.state = {
            email: "",
            password: ""
        }

        this.onSignIn = this.onSignIn.bind(this);
        this.onSignUp = this.onSignUp.bind(this);
    }

    onSignUp() {
        firebase.auth().createUserWithEmailAndPassword(this.state.email, this.state.password)
            .catch(function (error) {
                // Handle Errors here.
                console.log(error);

            });
    }

    onSignIn() {
        firebase.auth().signInWithEmailAndPassword(this.state.email, this.state.password)
            .catch(function (error) {
                console.log(error)
            })
    }

    render() {
        if (firebase.auth().currentUser == undefined) {
            return (
                <div>
                    <h1>This is Login page</h1>
                    <NavBar/>
                    {/*<Link to={{pathname: "/login"}}>Login</Link>*/}
                    <div className={"container"}>
                        <input placeholder={"email"}
                               className={"col-md-12"}
                               type={"email"}
                               value={this.props.email}
                               onChange={e => this.setState({email: e.target.value})}/>

                        <input placeholder={"password"}
                               className={"col-md-12 mb-3"}
                               type={"password"}
                               value={this.props.password}
                               onChange={e => this.setState({password: e.target.value})}/>
                        <button className={"col-md-6"} onClick={this.onSignIn}>SignIn</button>
                        <button className={"col-md-6"} onClick={this.onSignUp}>SignUp</button>
                    </div>
                </div>
            )
        }
        return (
            <Redirect push to={"/"}/>
        )
    }
}

export default Login;
User.js

    const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    firebase_id: {type: String, required: true, unique: true},
    name: {type: String, default: ''}
})
exports = mongoose.model('User',UserSchema);
const User = require('../models/user')
const firebaseAdmin = require('firebase-admin')

var serviceAccount = require('../../config/config').serviceAccount;

const databaseURL = require('../../config/config').databaseURL;


firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.applicationDefault(),
    databaseURL
})

exports = {
    verifyAccount: (user, idToken) => new Promise((resolve, reject) => {
        if (user === undefined) {
            return reject(new Error("auth denied"))
        }
        const userJson = JSON.parse(user);
        console.log(userJson)

        firebaseAdmin.auth().verifyIdToken(idToken)
            .then(decodedToken => {
                User.findOne({firebase_id: userJson.uid})
                    .then(user => {
                        if (!user) {
                            new User({
                                firebase_id: userJson.id,
                                name: userJson.email
                            }).save()
                                .then(user => {
                                    resolver(user)
                                }).catch(error => {
                                reject(new Error({error}))
                            })
                        } else {
                            resolve(user)
                        }
                    })
            }).catch(error => {
            reject(new Error({error}))
        })
    })
}
    const firebaseConfig = {
    apiKey: "*****************************",
    authDomain: "*****************************",
    databaseURL: "*****************************",
    projectId: "*****************************",
    storageBucket: "*****************************",
    messagingSenderId: "*****************************",
    appId: "*****************************",
    measurementId: "*****************************",
};
    var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.route('/api/user/verify').post(function (req, res) {
  const {user, idToken} = req.query;
  userFunc.verifyAccount(user, idToken)
      .then(result => {
        res.json(result)
      }).catch(error => {
    res.json(error)
  })
})

module.exports = router;
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('youtube-backend:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3005');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}
   {
  "name": "youtube-backend",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mongoose": "^5.9.27",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  },
  "devDependencies": {
    "firebase-admin": "^9.0.0"
  }
}
   const router = require('express').Router();
const userFunc = require('./functions/user')

router.route('/').get(function (req, res) {
    res.json("Backend Connected")
});

router.route('/api/user/verify').post(function (req, res) {
    const {user, idToken} = req.query;
    userFunc.verifyAccount(user, idToken)
        .then(result => {
            res.json(result)
        }).catch(error => {
        res.json(error)
    })
})
module.exports = router;
var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
    res.send('respond with a resource');
});

module.exports = router;
Config.js

    const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    firebase_id: {type: String, required: true, unique: true},
    name: {type: String, default: ''}
})
exports = mongoose.model('User',UserSchema);
const User = require('../models/user')
const firebaseAdmin = require('firebase-admin')

var serviceAccount = require('../../config/config').serviceAccount;

const databaseURL = require('../../config/config').databaseURL;


firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.applicationDefault(),
    databaseURL
})

exports = {
    verifyAccount: (user, idToken) => new Promise((resolve, reject) => {
        if (user === undefined) {
            return reject(new Error("auth denied"))
        }
        const userJson = JSON.parse(user);
        console.log(userJson)

        firebaseAdmin.auth().verifyIdToken(idToken)
            .then(decodedToken => {
                User.findOne({firebase_id: userJson.uid})
                    .then(user => {
                        if (!user) {
                            new User({
                                firebase_id: userJson.id,
                                name: userJson.email
                            }).save()
                                .then(user => {
                                    resolver(user)
                                }).catch(error => {
                                reject(new Error({error}))
                            })
                        } else {
                            resolve(user)
                        }
                    })
            }).catch(error => {
            reject(new Error({error}))
        })
    })
}
    const firebaseConfig = {
    apiKey: "*****************************",
    authDomain: "*****************************",
    databaseURL: "*****************************",
    projectId: "*****************************",
    storageBucket: "*****************************",
    messagingSenderId: "*****************************",
    appId: "*****************************",
    measurementId: "*****************************",
};
    var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.route('/api/user/verify').post(function (req, res) {
  const {user, idToken} = req.query;
  userFunc.verifyAccount(user, idToken)
      .then(result => {
        res.json(result)
      }).catch(error => {
    res.json(error)
  })
})

module.exports = router;
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('youtube-backend:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3005');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}
   {
  "name": "youtube-backend",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mongoose": "^5.9.27",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  },
  "devDependencies": {
    "firebase-admin": "^9.0.0"
  }
}
   const router = require('express').Router();
const userFunc = require('./functions/user')

router.route('/').get(function (req, res) {
    res.json("Backend Connected")
});

router.route('/api/user/verify').post(function (req, res) {
    const {user, idToken} = req.query;
    userFunc.verifyAccount(user, idToken)
        .then(result => {
            res.json(result)
        }).catch(error => {
        res.json(error)
    })
})
module.exports = router;
var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
    res.send('respond with a resource');
});

module.exports = router;
Index.js

    const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    firebase_id: {type: String, required: true, unique: true},
    name: {type: String, default: ''}
})
exports = mongoose.model('User',UserSchema);
const User = require('../models/user')
const firebaseAdmin = require('firebase-admin')

var serviceAccount = require('../../config/config').serviceAccount;

const databaseURL = require('../../config/config').databaseURL;


firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.applicationDefault(),
    databaseURL
})

exports = {
    verifyAccount: (user, idToken) => new Promise((resolve, reject) => {
        if (user === undefined) {
            return reject(new Error("auth denied"))
        }
        const userJson = JSON.parse(user);
        console.log(userJson)

        firebaseAdmin.auth().verifyIdToken(idToken)
            .then(decodedToken => {
                User.findOne({firebase_id: userJson.uid})
                    .then(user => {
                        if (!user) {
                            new User({
                                firebase_id: userJson.id,
                                name: userJson.email
                            }).save()
                                .then(user => {
                                    resolver(user)
                                }).catch(error => {
                                reject(new Error({error}))
                            })
                        } else {
                            resolve(user)
                        }
                    })
            }).catch(error => {
            reject(new Error({error}))
        })
    })
}
    const firebaseConfig = {
    apiKey: "*****************************",
    authDomain: "*****************************",
    databaseURL: "*****************************",
    projectId: "*****************************",
    storageBucket: "*****************************",
    messagingSenderId: "*****************************",
    appId: "*****************************",
    measurementId: "*****************************",
};
    var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.route('/api/user/verify').post(function (req, res) {
  const {user, idToken} = req.query;
  userFunc.verifyAccount(user, idToken)
      .then(result => {
        res.json(result)
      }).catch(error => {
    res.json(error)
  })
})

module.exports = router;
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('youtube-backend:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3005');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}
   {
  "name": "youtube-backend",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mongoose": "^5.9.27",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  },
  "devDependencies": {
    "firebase-admin": "^9.0.0"
  }
}
   const router = require('express').Router();
const userFunc = require('./functions/user')

router.route('/').get(function (req, res) {
    res.json("Backend Connected")
});

router.route('/api/user/verify').post(function (req, res) {
    const {user, idToken} = req.query;
    userFunc.verifyAccount(user, idToken)
        .then(result => {
            res.json(result)
        }).catch(error => {
        res.json(error)
    })
})
module.exports = router;
var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
    res.send('respond with a resource');
});

module.exports = router;
Www.js

    const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    firebase_id: {type: String, required: true, unique: true},
    name: {type: String, default: ''}
})
exports = mongoose.model('User',UserSchema);
const User = require('../models/user')
const firebaseAdmin = require('firebase-admin')

var serviceAccount = require('../../config/config').serviceAccount;

const databaseURL = require('../../config/config').databaseURL;


firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.applicationDefault(),
    databaseURL
})

exports = {
    verifyAccount: (user, idToken) => new Promise((resolve, reject) => {
        if (user === undefined) {
            return reject(new Error("auth denied"))
        }
        const userJson = JSON.parse(user);
        console.log(userJson)

        firebaseAdmin.auth().verifyIdToken(idToken)
            .then(decodedToken => {
                User.findOne({firebase_id: userJson.uid})
                    .then(user => {
                        if (!user) {
                            new User({
                                firebase_id: userJson.id,
                                name: userJson.email
                            }).save()
                                .then(user => {
                                    resolver(user)
                                }).catch(error => {
                                reject(new Error({error}))
                            })
                        } else {
                            resolve(user)
                        }
                    })
            }).catch(error => {
            reject(new Error({error}))
        })
    })
}
    const firebaseConfig = {
    apiKey: "*****************************",
    authDomain: "*****************************",
    databaseURL: "*****************************",
    projectId: "*****************************",
    storageBucket: "*****************************",
    messagingSenderId: "*****************************",
    appId: "*****************************",
    measurementId: "*****************************",
};
    var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.route('/api/user/verify').post(function (req, res) {
  const {user, idToken} = req.query;
  userFunc.verifyAccount(user, idToken)
      .then(result => {
        res.json(result)
      }).catch(error => {
    res.json(error)
  })
})

module.exports = router;
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('youtube-backend:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3005');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}
   {
  "name": "youtube-backend",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mongoose": "^5.9.27",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  },
  "devDependencies": {
    "firebase-admin": "^9.0.0"
  }
}
   const router = require('express').Router();
const userFunc = require('./functions/user')

router.route('/').get(function (req, res) {
    res.json("Backend Connected")
});

router.route('/api/user/verify').post(function (req, res) {
    const {user, idToken} = req.query;
    userFunc.verifyAccount(user, idToken)
        .then(result => {
            res.json(result)
        }).catch(error => {
        res.json(error)
    })
})
module.exports = router;
var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
    res.send('respond with a resource');
});

module.exports = router;
Package.json

    const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    firebase_id: {type: String, required: true, unique: true},
    name: {type: String, default: ''}
})
exports = mongoose.model('User',UserSchema);
const User = require('../models/user')
const firebaseAdmin = require('firebase-admin')

var serviceAccount = require('../../config/config').serviceAccount;

const databaseURL = require('../../config/config').databaseURL;


firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.applicationDefault(),
    databaseURL
})

exports = {
    verifyAccount: (user, idToken) => new Promise((resolve, reject) => {
        if (user === undefined) {
            return reject(new Error("auth denied"))
        }
        const userJson = JSON.parse(user);
        console.log(userJson)

        firebaseAdmin.auth().verifyIdToken(idToken)
            .then(decodedToken => {
                User.findOne({firebase_id: userJson.uid})
                    .then(user => {
                        if (!user) {
                            new User({
                                firebase_id: userJson.id,
                                name: userJson.email
                            }).save()
                                .then(user => {
                                    resolver(user)
                                }).catch(error => {
                                reject(new Error({error}))
                            })
                        } else {
                            resolve(user)
                        }
                    })
            }).catch(error => {
            reject(new Error({error}))
        })
    })
}
    const firebaseConfig = {
    apiKey: "*****************************",
    authDomain: "*****************************",
    databaseURL: "*****************************",
    projectId: "*****************************",
    storageBucket: "*****************************",
    messagingSenderId: "*****************************",
    appId: "*****************************",
    measurementId: "*****************************",
};
    var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.route('/api/user/verify').post(function (req, res) {
  const {user, idToken} = req.query;
  userFunc.verifyAccount(user, idToken)
      .then(result => {
        res.json(result)
      }).catch(error => {
    res.json(error)
  })
})

module.exports = router;
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('youtube-backend:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3005');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}
   {
  "name": "youtube-backend",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mongoose": "^5.9.27",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  },
  "devDependencies": {
    "firebase-admin": "^9.0.0"
  }
}
   const router = require('express').Router();
const userFunc = require('./functions/user')

router.route('/').get(function (req, res) {
    res.json("Backend Connected")
});

router.route('/api/user/verify').post(function (req, res) {
    const {user, idToken} = req.query;
    userFunc.verifyAccount(user, idToken)
        .then(result => {
            res.json(result)
        }).catch(error => {
        res.json(error)
    })
})
module.exports = router;
var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
    res.send('respond with a resource');
});

module.exports = router;
路线

    const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    firebase_id: {type: String, required: true, unique: true},
    name: {type: String, default: ''}
})
exports = mongoose.model('User',UserSchema);
const User = require('../models/user')
const firebaseAdmin = require('firebase-admin')

var serviceAccount = require('../../config/config').serviceAccount;

const databaseURL = require('../../config/config').databaseURL;


firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.applicationDefault(),
    databaseURL
})

exports = {
    verifyAccount: (user, idToken) => new Promise((resolve, reject) => {
        if (user === undefined) {
            return reject(new Error("auth denied"))
        }
        const userJson = JSON.parse(user);
        console.log(userJson)

        firebaseAdmin.auth().verifyIdToken(idToken)
            .then(decodedToken => {
                User.findOne({firebase_id: userJson.uid})
                    .then(user => {
                        if (!user) {
                            new User({
                                firebase_id: userJson.id,
                                name: userJson.email
                            }).save()
                                .then(user => {
                                    resolver(user)
                                }).catch(error => {
                                reject(new Error({error}))
                            })
                        } else {
                            resolve(user)
                        }
                    })
            }).catch(error => {
            reject(new Error({error}))
        })
    })
}
    const firebaseConfig = {
    apiKey: "*****************************",
    authDomain: "*****************************",
    databaseURL: "*****************************",
    projectId: "*****************************",
    storageBucket: "*****************************",
    messagingSenderId: "*****************************",
    appId: "*****************************",
    measurementId: "*****************************",
};
    var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.route('/api/user/verify').post(function (req, res) {
  const {user, idToken} = req.query;
  userFunc.verifyAccount(user, idToken)
      .then(result => {
        res.json(result)
      }).catch(error => {
    res.json(error)
  })
})

module.exports = router;
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('youtube-backend:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3005');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}
   {
  "name": "youtube-backend",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mongoose": "^5.9.27",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  },
  "devDependencies": {
    "firebase-admin": "^9.0.0"
  }
}
   const router = require('express').Router();
const userFunc = require('./functions/user')

router.route('/').get(function (req, res) {
    res.json("Backend Connected")
});

router.route('/api/user/verify').post(function (req, res) {
    const {user, idToken} = req.query;
    userFunc.verifyAccount(user, idToken)
        .then(result => {
            res.json(result)
        }).catch(error => {
        res.json(error)
    })
})
module.exports = router;
var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
    res.send('respond with a resource');
});

module.exports = router;
Users.js

    const mongoose = require('mongoose');

const UserSchema = new mongoose.Schema({
    firebase_id: {type: String, required: true, unique: true},
    name: {type: String, default: ''}
})
exports = mongoose.model('User',UserSchema);
const User = require('../models/user')
const firebaseAdmin = require('firebase-admin')

var serviceAccount = require('../../config/config').serviceAccount;

const databaseURL = require('../../config/config').databaseURL;


firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.applicationDefault(),
    databaseURL
})

exports = {
    verifyAccount: (user, idToken) => new Promise((resolve, reject) => {
        if (user === undefined) {
            return reject(new Error("auth denied"))
        }
        const userJson = JSON.parse(user);
        console.log(userJson)

        firebaseAdmin.auth().verifyIdToken(idToken)
            .then(decodedToken => {
                User.findOne({firebase_id: userJson.uid})
                    .then(user => {
                        if (!user) {
                            new User({
                                firebase_id: userJson.id,
                                name: userJson.email
                            }).save()
                                .then(user => {
                                    resolver(user)
                                }).catch(error => {
                                reject(new Error({error}))
                            })
                        } else {
                            resolve(user)
                        }
                    })
            }).catch(error => {
            reject(new Error({error}))
        })
    })
}
    const firebaseConfig = {
    apiKey: "*****************************",
    authDomain: "*****************************",
    databaseURL: "*****************************",
    projectId: "*****************************",
    storageBucket: "*****************************",
    messagingSenderId: "*****************************",
    appId: "*****************************",
    measurementId: "*****************************",
};
    var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.route('/api/user/verify').post(function (req, res) {
  const {user, idToken} = req.query;
  userFunc.verifyAccount(user, idToken)
      .then(result => {
        res.json(result)
      }).catch(error => {
    res.json(error)
  })
})

module.exports = router;
#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('youtube-backend:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3005');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
 * Normalize a port into a number, string, or false.
 */

function normalizePort(val) {
  var port = parseInt(val, 10);

  if (isNaN(port)) {
    // named pipe
    return val;
  }

  if (port >= 0) {
    // port number
    return port;
  }

  return false;
}

/**
 * Event listener for HTTP server "error" event.
 */

function onError(error) {
  if (error.syscall !== 'listen') {
    throw error;
  }

  var bind = typeof port === 'string'
    ? 'Pipe ' + port
    : 'Port ' + port;

  // handle specific listen errors with friendly messages
  switch (error.code) {
    case 'EACCES':
      console.error(bind + ' requires elevated privileges');
      process.exit(1);
      break;
    case 'EADDRINUSE':
      console.error(bind + ' is already in use');
      process.exit(1);
      break;
    default:
      throw error;
  }
}

/**
 * Event listener for HTTP server "listening" event.
 */

function onListening() {
  var addr = server.address();
  var bind = typeof addr === 'string'
    ? 'pipe ' + addr
    : 'port ' + addr.port;
  debug('Listening on ' + bind);
}
   {
  "name": "youtube-backend",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "mongoose": "^5.9.27",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  },
  "devDependencies": {
    "firebase-admin": "^9.0.0"
  }
}
   const router = require('express').Router();
const userFunc = require('./functions/user')

router.route('/').get(function (req, res) {
    res.json("Backend Connected")
});

router.route('/api/user/verify').post(function (req, res) {
    const {user, idToken} = req.query;
    userFunc.verifyAccount(user, idToken)
        .then(result => {
            res.json(result)
        }).catch(error => {
        res.json(error)
    })
})
module.exports = router;
var express = require('express');
var router = express.Router();

router.get('/', function (req, res, next) {
    res.send('respond with a resource');
});

module.exports = router;