Развертывание на AWS без виртуальной машины при попытке извлечь что-либо в Firestore на нелокальном сервере {Ошибка: не удается найти модуль 'grpc' - PullRequest
0 голосов
/ 16 января 2019

Я могу успешно выполнить свой код локально, подключившись к тому же пожарному хранилищу, но когда я помещаю свой код на сервер релизов и достигаю той же конечной точки, я получаю следующую ошибку:

{ Error: Cannot find module 'grpc'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/var/app/current/node_modules/google-gax/build/src/grpc.js:46:19)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/var/app/current/node_modules/google-gax/build/src/index.js:33:16)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32) code: 'MODULE_NOT_FOUND' }

package.json dependencies включает:

"firebase-admin": "^6.4.0",
"firebase-functions": "2.1.0",

По моему index.js:

var firestore = require("firebase-admin");
var serviceAccount = require("./firestore-config.json");
firestore.initializeApp({
  credential: firestore.credential.cert(serviceAccount)
});

По моему main.js:

Parse.Cloud.define("sendPush", function (request, response) {
  var db = firestore.firestore();

  db.collection("myCollection")
    .doc(request.params.id)
    .get()
    .then(docSnapshot => {
       // code that never hits
    }).catch(error => {
        console.log("there was some error...");

        response.error("Unable to get mute settings for group b");
        assert.ok(true);
    });

Мой код попадает в блок catch, как только я развернусь. Есть идеи, что здесь происходит? Спасибо

Edit:

Ни на моем локальном экземпляре, ни на моем сервере не запущены Docker, Vagrant или любая другая виртуальная машина, установка npm выполняется как часть процесса развертывания на моей машине AWS

1 Ответ

0 голосов
/ 16 января 2019

Я смог найти ответ на этот вопрос после охоты в firebase-admin-node проблемах GitHub :

Я добавил .npmrc файл в корень моего проекта и добавил unsafe-perm=true как единственная строка в файле. Развернули и все работало нормально.

Основная проблема была связана с разрешениями пользователя на установку gprc, что подробно описано в ссылке выше.

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