Firebase: как исправить Ошибка: ENOENT: нет такого файла или каталога, откройте 'node_modules / protobufjs / google / protobuf / api.proto' - PullRequest
0 голосов
/ 22 июня 2019

Мы делаем следующий запрос к облачному пожарному хранилищу:

 ` var meeting = await db.collection("meetings").where(
    "pin", "==", request.body.Digits).where(
    "status", "==", "in-progress").get()`

Это работает на наших локальных машинах, но дает сбой при развертывании в EC2. У нас есть клиентская библиотека Firestore, установленная на обоих, но мы распаковываем ее при развертывании.

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

UnhandledPromiseRejectionWarning: Error: ENOENT: no such file or directory, open 'node_modules/protobufjs/google/protobuf/api.proto'
    at Object.openSync (fs.js:431:3)
    at Object.readFileSync (fs.js:333:35)
    at fetch (/home/node/server/app.compiled.js:350251:34)
    at Root.load (/home/node/server/app.compiled.js:350285:13)
    at Root.loadSync (/home/node/server/app.compiled.js:350326:17)
    at Object.loadSync (/home/node/server/app.compiled.js:347406:17)
    at Object../node_modules/@grpc/proto-loader/build/src/index.js (/home/node/server/app.compiled.js:65075:37)
    at __webpack_require__ (/home/node/server/app.compiled.js:20:30)
    at Object.<anonymous> (/home/node/server/app.compiled.js:222521:25)
    at Object../node_modules/google-gax/build/src/grpc.js (/home/node/server/app.compiled.js:222775:30)
    at __webpack_require__ (/home/node/server/app.compiled.js:20:30)
    at Object../node_modules/google-gax/build/src/index.js (/home/node/server/app.compiled.js:222819:16)
    at __webpack_require__ (/home/node/server/app.compiled.js:20:30)
    at Object.<anonymous> (/home/node/server/app.compiled.js:44631:13)
    at Object../node_modules/@google-cloud/firestore/build/src/v1/firestore_client.js (/home/node/server/app.compiled.js:45987:30)
    at __webpack_require__ (/home/node/server/app.compiled.js:20:30)
(node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)

Мы перепробовали практически все, о чем вы могли подумать, фактически не изменив запрос - заново выполнив package.json и наши сценарии сборки, но не можем понять это. Любая помощь?

1 Ответ

0 голосов
/ 23 июня 2019

Проблема в том, что Node.js SDK для Cloud Firestore использует gRPC для связи, он построен на собственном коде, есть несколько способов обойти это, но я бы порекомендовал докеризовать ваше приложение в образ, подобный это

Эта проблема отчасти похожа на эту при попытке запустить SDK в лямбду AWS.

Надеюсь, это укажет вам направление

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