Функции Firebase локальные зависимости "file:" - PullRequest
0 голосов
/ 31 января 2019

Я использую response-crud-shared в качестве зависимости для Reaction-Crud-Backend , который использует Firebase Cloud Functions .

На Reaction-Crud-Backend У меня есть следующее:

{
  "name": "react-crud-backend",
  "description": "Cloud Functions for Firebase",
  "scripts": {
    ...
  },
  "dependencies": {
    ...
    "react-crud-shared": "file:../shared",
    ...
  },
  "engines": {
    "node": "8"
  },
  "private": true,
  "devDependencies": {
    ...
  }
}

На Act-Crud-общий У меня есть следующее:

{
  "name": "react-crud-shared",
  "version": "0.0.1",
  "description": "",
  "main": "src/index.js",
  "private": true,
  "dependencies": {
    "lodash": "^4.17.11"
  }
}

Работает нормально при разработке: «firebase serve --only functions», но при развертывании выдается ошибка:

Did you list all required modules in the package.json dependencies?
Detailed stack trace: Error: Cannot find module 'react-crud-shared'

Есть ли способ заставить его работать без публикации?частный репозиторий для NPM?

Спасибо

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

node_modules (обычные) игнорируются при развертывании;

можно по-прежнему развертывать частные модули с такой структурой каталогов:

functions/
  index.js
  package.json
  react-crud-shared/
    package.json

и package.json.что:

{
  "dependencies": {
    ...
    "react-crud-shared": "file:./react-crud-shared"
  }
}

другим методом было бы очистить игнорирующее:

{
  "functions": {
    "ignore": []
  }
}

просто подумайте, что первый лучше, потому что это подтолкнет весь локальный node_modulesdirectory.


помимо этих методов обхода ...

можно устанавливать опубликованные внутри системы модули из облачных исходных репозиториев через git+https://.

0 голосов
/ 04 февраля 2019

РЕДАКТИРОВАТЬ: Я нашел решение для этого, что мне нравится намного лучше.Я прокомментировал эту проблему github здесь: https://github.com/firebase/firebase-tools/issues/968#issuecomment-460323113.В основном, у меня есть предустановочный скрипт, который запускает npm pack, чтобы скопировать пакет в каталог функций перед использованием firebase deploy.

FWIW У меня точно такая же проблема.Не совсем уверен, как я собираюсь ее решить, но эта информация из документа была полезна (https://firebase.google.com/docs/functions/handle-dependencies):

Чтобы указать зависимость для вашей функции, добавьте ее в файл package.json.Если вы развертываете с помощью инструмента командной строки gcloud, вы также можете предварительно установить зависимости и развернуть их вместе со своей функцией. По умолчанию папка node_modules добавляется в ваш файл .gcloudignore и не загружается как часть вашего развертывания.разверните предустановленные зависимости, удалите node_modules / из файла .gcloudignore перед развертыванием своей функции.

Примечание. Развертывание предустановленных зависимостей работает только с gcloud; интерфейс командной строки Firebase игнорирует локальную папку node_modules.

Таким образом, кажется, что вы могли бы сначала запустить «npm install» локально, а затем использовать gcloud для развертывания, так как это скопировало бы ваш каталог node_modules, который имел бы в нем вашу равноправную зависимость.

Правда, отчасти воняет, что мне придется переключиться на gcloud сFirebase CLI для развертывания.Тьфу.

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