简体   繁体   English

Firebase 函数部署失败

[英]Firebase functions failed to deploy

I'm getting the following error whenever I deploy my firebase functions每当我部署 firebase 函数时,我都会收到以下错误

Error: Error occurred while parsing your function triggers.错误:解析 function 触发器时出错。

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in D:\Proyectos\socialapp-functions\functions\node_modules\firebase\package.json
    at throwExportsNotFound (internal/modules/esm/resolve.js:285:9)
    at packageExportsResolve (internal/modules/esm/resolve.js:508:3)
    at resolveExports (internal/modules/cjs/loader.js:450:36)
    at Function.Module._findPath (internal/modules/cjs/loader.js:490:31)
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:888:27)
    at Function.Module._load (internal/modules/cjs/loader.js:746:27)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:92:18)
    at Object.<anonymous> (D:\Proyectos\socialapp-functions\functions\index.js:4:18)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)

My index.js我的索引.js

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

const firebaseConfig = {...};

firebase.initializeApp(firebaseConfig);

app.post('/signup', (req, res) => {

const newUser = {
    email: req.body.email,
    password: req.body.password,
    confirmPassword: req.body.confirmPassword,
    handle: req.body.handle
};

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

})

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

Edit: I'm also adding my package.json编辑:我还要添加我的 package.json

{
  "name": "functions",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    "serve": "firebase emulators:start --only functions",
    "shell": "firebase functions:shell",
    "start": "npm run shell",
    "deploy": "firebase deploy --only functions",
    "logs": "firebase functions:log"
  },
  "engines": {
    "node": "16"
  },
  "main": "index.js",
  "dependencies": {
    "express": "^4.17.3",
    "firebase": "^9.6.9",
    "firebase-admin": "^10.0.2",
    "firebase-functions": "^3.19.0"
  },
  "devDependencies": {
    "firebase-functions-test": "^0.2.0"
  },
  "private": true
}

I'm pretty much new on using Firebase with Express.js, I'll gladly appreciate any help.我对在 Express.js 中使用 Firebase 非常陌生,我很乐意提供任何帮助。 Thanks in advance.提前致谢。

Edit.编辑。 Added my definition for firebase functions container using express.js exports.api = functions.https.onRequest(app);使用 express.js exports.api = functions.https.onRequest(app); 添加了我对 firebase 函数容器的定义

It seems you have the new Firebase Modular SDK ( v9.0.0+ ) installed and then const firebase = require("firebase") import seems to be the issue.您似乎安装了新的Firebase Modular SDK ( v9.0.0+ ) 然后const firebase = require("firebase") import 似乎是问题所在。 If you want to use web SDK, then try refactoring your code as shown below:如果您想使用 web SDK,请尝试重构您的代码,如下所示:

const app = require("express")();
const functions = require("firebase-functions");

const { initializeApp } = require("firebase/app");
const { createUserWithEmailAndPassword, getAuth } = require("firebase/auth");

app.post("/signup", (req, res) => {
  const newUser = {...};

  return createUserWithEmailAndPassword(
      fireAuth,
      newUser.email,
      newUser.password
    )
    .then((data) => {
      return res.status(201).json({
        message: `User ${newUser.handle} created successfully`,
      });
    })
})

However you don't need Firebase client SDK to create users in a cloud function. You can use the Admin SDK for that as shown below:但是,您不需要 Firebase 客户端 SDK 在云 function 中创建用户。您可以使用Admin SDK ,如下所示:

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

admin.initializeApp();

app.post("/signup", (req, res) => {
  const newUser = {...};

  return admin
    .auth()
    .createUser(newUser)
    .then((data) => {
      return res.status(201).json({
        message: `User ${newUser.handle} created successfully`,
      });
    })
});

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Firebase 函数部署问题(无法创建/更新函数) - Firebase functions deploy problem (Failed to create/update function) 无法部署 Firebase 函数(无法获取未定义的运行服务) - Can't deploy Firebase functions (Failed to fetch Run service undefined) Firebase 部署功能 - 无法更新功能 - Firebase Admin this.appStore?.removeApp(this.name); - Firebase Deploy Functions - Failed to update function - Firebase Admin this.appStore?.removeApp(this.name); 使用云构建部署云功能失败:错误:未能获得 firebase 项目 - deploy cloud functions using cloud build failed: Error: failed to get firebase project 在 jenkins 上部署 firebase 功能:firebase:找不到命令 - deploy firebase functions on jenkins: firebase: command not found 我无法部署 firebase 云功能:无法从源加载 function 定义,D:\ 中没有定义“导出”主要内容 - I cannot deploy firebase cloud functions: Failed to load function definition from source, No "exports" main defined in D:\ Firebase 部署函数失败 (Linux):libc.so.6、GLIBC_2.28,节点需要 - Firebase Deploy Functions Failed (Linux): libc.so.6, GLIBC_2.28, required by node 无法从 github 操作部署 firebase 功能 - Unable to deploy firebase functions from github action Firebase 云函数部署错误 - 超出配额 - Firebase Cloud Functions Deploy Error - Quota Exceeded React + Firebase Cloud Functions in Typescript部署失败 - React + Firebase Cloud Functions in Typescript fails to deploy
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM