Как использовать частные пакеты NPM с облачными функциями?

Я пытаюсь переключить приложение на Firebase и перенести бэкэнд на облачные функции Firebase.

Это приложение использует собственный пакет (@org/name) как зависимость.

Я пробовал другое решение, но никто не работает:

  • передать NPM_TOKEN env: невозможно, так как ограничения Firebase для строчной конфигурации
  • npm install модуль в функции каталог
  • создать в каталог функций с маркером аутентификации YARN и NPM

Он всегда отклоняет развертывание с помощью:

Deploy Error: Build failed: Module @org/name not found in npm registry

поддерживаются ли частные пакеты на Firebase ?

5 ответов


Если вы хотите включить пакеты, которые не являются общедоступными через npm, вы должны упаковать их самостоятельно и включить их в папку функций. Вся папка functions загружается при развертывании, поэтому вы должны иметь возможность требовать вещи из нее, как вы бы локально.


в настоящее время нет удобного способа сделать это.

мне кажется, что GCF не использует клиент npm для извлечения из реестра npm и вместо этого извлекает его напрямую. Это предотвращает использование стандартного .npmrc файл или любой другой метод клиент npm знает.

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

$ npm pack @org/name
$ npm install --save tarball-output.tgz

это добавит локальный tarball к вашему package.json и Google Cloud функции будут знать, чтобы использовать он.

Я очень хочу, чтобы они читали .npmrc из корневого пути проекта или, альтернативно, мы могли бы передать им токен как переменную env.

есть открытая проблема об этом: https://issuetracker.google.com/issues/36665861


функции Google Cloud теперь поддерживают частные пакеты NPM.

для использования частного модуля npm необходимо предоставить учетные данные (токен аутентификации) для реестра npm в a .npmrc файла находится в каталог функций. Вы можете просто скопировать .файл npmrc, который был создано в домашнем каталоге при входе в npm с помощью npm команда login.

не входит .файл npmrc, если вы не используете private репозитории, как это может увеличение времени развертывания функции.

источник: https://cloud.google.com/functions/docs/writing/dependencies#using_private_modules


со ссылкой на Google проблема tracker,Это было исправлено. для получения дополнительной информации вы можете проверить документацию на Облачная Платформа Google.

использование частных модулей

чтобы использовать частный модуль npm, вы должны предоставить учетные данные (токен аутентификации) для реестра npm в .npmrc файл, расположенный в каталоге функции. Вы можете просто скопировать .npmrc файл, который был создан в вашем домашнем каталоге, когда вы вход в систему с помощью команды npm входа.

не входит .npmrc файл, если вы не используете приватные репозитории, так как это может увеличить время развертывания функций.

Если какая-либо проблема сохраняется, пожалуйста, сообщите в Google проблема tracker они снова откроются для изучения.


у меня была та же проблема, но потом я понял, что забыл добавить зависимость к package.json файл, который должен находиться в том же каталоге, что и ваш index.js