【问题标题】:Importing firebase in node.js for cloud functions在 node.js 中为云功能导入 firebase
【发布时间】:2021-09-08 04:13:40
【问题描述】:

我正在学习编写云函数的教程,我尝试导入 firebase 并使用教程中使用的 firebase.auth(),但出现以下错误。

⚠  Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in /home/sankethbk7777/Desktop/React/Projects/social-ape/my-code/social-ape/functions/node_modules/firebase/package.json
    at throwExportsNotFound (internal/modules/esm/resolve.js:299:9)
    at packageExportsResolve (internal/modules/esm/resolve.js:522:3)
    at resolveExports (internal/modules/cjs/loader.js:449:36)
    at Function.Module._findPath (internal/modules/cjs/loader.js:489:31)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:875:27)
    at Function.Module._load (internal/modules/cjs/loader.js:745:27)
    at Module.require (internal/modules/cjs/loader.js:961:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at Object.<anonymous> (/home/sankethbk7777/Desktop/React/Projects/social-ape/my-code/social-ape/functions/index.js:19:18)
    at Module._compile (internal/modules/cjs/loader.js:1072:14)
⚠  We were unable to load your functions code. (see above)

代码

函数/index.js

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const app = require('express')();

admin.initializeApp();

const config = {
  apiKey: 'AIzaSyDMFe1IwnLoui-Meue-FMwNhc1k-MB8vc8',
  authDomain: 'socialape-d306c.firebaseapp.com',
  projectId: 'socialape-d306c',
  storageBucket: 'socialape-d306c.appspot.com',
  messagingSenderId: '705972174784',
  appId: '1:705972174784:web:1ed87302a774bd1cef1225',
};

const firebase = require('firebase');
firebase.initializeApp(config);

// Signup route

app.post('/signup', (req, res) => {
  const newUser = {
    email: req.body.email,
    password: req.body.password,
    confirmPassword: req.body.confirmPassword,
    handle: req.body.handle,
  };
  // TODO: validate date

  firebase
    .auth()
    .createUserWithEmailAndPassword(newUser.email, newUser.password)
    .then((data) => {
      return res
        .status(201)
        .json({ message: `user ${data.user.uid} signed up successfully` });
    })
    .catch((err) => {
      console.log(err);
      return res.status(500).json({ error: err.code });
    });
});

// To tell firebase cloud functions to use routes on express app
// we have written api because we want all our API URL's to start with /api.

exports.api = functions.https.onRequest(app);

我知道由于版本更改(本教程从 2019 年开始),导入可能会略有不同,但我无法修复它。请帮帮我

【问题讨论】:

    标签: node.js firebase google-cloud-functions


    【解决方案1】:

    您应该在云函数而不是客户端中使用 Admin SDK。话虽如此,您可以删除const firebase = require("firebase")firebase.initializeApp(config); 以及客户端配置。创建用户可以使用createUser()方法:

    app.post('/signup', (req, res) => {
      const newUser = {
        email: req.body.email,
        password: req.body.password,
        confirmPassword: req.body.confirmPassword,
        handle: req.body.handle,
      };
    
      return admin.auth().createUser({ email, password }).then((userRecord) => {
        return res.send(`Created user ${userRecord.uid}`)
      })
    }
    

    我不确定“句柄”是什么,但您可以使用 Custom Claims 或任何数据库来存储它。

    请注意,在云功能或服务器环境中创建用户不会自动让用户登录。返回响应后,您必须将用户重定向到您的登录页面。

    【讨论】:

      猜你喜欢
      • 2020-04-01
      • 2020-06-09
      • 2019-04-16
      • 1970-01-01
      • 2018-11-29
      • 2018-05-09
      • 2018-08-27
      • 2021-10-22
      相关资源
      最近更新 更多