Как использовать частные пакеты 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