Ошибка при развертывании функций Firebase: невозможно найти модуль - PullRequest
0 голосов
/ 29 марта 2020

Мой код: Внутри индекса. js Файл. Настройка с помощью команды инициализации firebase, выбранные функции. Я могу развернуть без ошибок, если я закомментирую код:

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

Он выдает ошибку, если я оставлю это. Я попытался запустить npm install и npm rebuild в обоих папка функций и родительская папка.

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

const config = {
  apiKey: "apiKey",
  authDomain: "socialapp.firebaseapp.com",
  databaseURL: "https://socialapp.firebaseio.com"
  storageBucket: "socialapp.appspot.com"
};

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

app.get("/screams", (req, res) => {
  admin
    .firestore()
    .collection("screams")
    .orderBy("createdAt", "descending")
    .get()
    .then(data => {
      let screams = [];
      data.forEach(doc => {
        screams.push({
          screamId: doc.id,
          body: doc.data().body,
          userHandle: doc.data().userHandle,
          createdAt: doc.data().createdAt
        });
      });
      return res.json(screams);
    })
    .catch(err => console.log(err));
});

app.post("/scream", (req, res) => {
  const newScream = {
    body: req.body.body,
    userHandle: req.body.userHandle,
    createdAt: new Date().toISOString()
  };
  admin
    .firestore()
    .collection("screams")
    .add(newScream)
    .then(doc => {
      res.json({ message: `document ${doc.id} created successfully` });
    })
    .catch(err => {
      res.status(500).json({ error: "Something went wrong." });
      console.error(err);
    });
});

//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 data

  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.err(error);
      return res.status(500).json({ error: err.code });
    });
});

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

Ошибка с консоли:

i  deploying functions
i  functions: ensuring necessary APIs are enabled...
+  functions: all necessary APIs are enabled
i  functions: preparing functions directory for uploading...

Error: Error parsing triggers: The gRPC binary module was not installed. This may be fixed by running "npm rebuild"
Original error: Cannot find module 'C:\Users\alex_\Desktop\socialapp-functions\functions\node_modules\grpc\src\node\extension_binary\node-v79-win32-x64-unknown\grpc_node.node'
Require stack:
- C:\Users\alex_\Desktop\socialapp-functions\functions\node_modules\grpc\src\grpc_extension.js
- C:\Users\alex_\Desktop\socialapp-functions\functions\node_modules\grpc\src\client_interceptors.js
- C:\Users\alex_\Desktop\socialapp-functions\functions\node_modules\grpc\src\client.js
- C:\Users\alex_\Desktop\socialapp-functions\functions\node_modules\grpc\index.js
- C:\Users\alex_\Desktop\socialapp-functions\functions\node_modules\@firebase\firestore\dist\index.node.cjs.js
- C:\Users\alex_\Desktop\socialapp-functions\functions\node_modules\firebase\dist\index.node.cjs.js
- C:\Users\alex_\Desktop\socialapp-functions\functions\index.js
- C:\Users\alex_\AppData\Roaming\npm\node_modules\firebase-tools\lib\triggerParser.js

Try running "npm install" in your functions directory before deploying.

Having trouble? Try firebase [command] --help

1 Ответ

0 голосов
/ 29 марта 2020

Здесь вам не нужен модуль "firebase" (он в основном предназначен для веб-приложений, обратите внимание nodejs приложения). Вместо этого вы можете использовать Admin SDK для создания учетной записи пользователя, как описано в документации .

...