Wie können private NPM-Pakete mit Cloud-Funktionen verwendet werden?

8

Ich versuche, eine Anwendung zu Firebase zu wechseln und das Backend zu Firebase Cloud Functions zu übertragen.

Diese Anwendung verwendet ein privates Paket ( @org/name ) als Abhängigkeit.

Ich habe verschiedene Lösungen ausprobiert, aber keine scheint zu funktionieren:

  • Übergeben Sie eine NPM_TOKEN env: nicht möglich, da Firebase-Beschränkungen auf die niedrigere Konfiguration beschränkt sind
  • npm install das Modul im Funktionsverzeichnis
  • Erstellen Sie eine .npmrc -Datei im Funktionsverzeichnis mit dem YARN- und NPM-Authentifizierungs-Token

Die Bereitstellung wird immer abgelehnt mit:

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

Werden private Pakete auf Firebase unterstützt?

    
Samy Pessé 20.03.2017, 10:22
quelle

5 Antworten

3

Wenn Sie Pakete hinzufügen möchten, die nicht öffentlich über npm verfügbar sind, müssen Sie sie selbst verpacken und in Ihren Funktionsordner aufnehmen. Der gesamte Funktionsordner wird beim Deployment hochgeladen, so dass Sie in der Lage sein sollten, Dinge wie lokal auszuführen.

    
Doug Stevenson 20.03.2017, 19:31
quelle
4

Es gibt derzeit keinen praktischen Weg, dies zu tun.

Es scheint mir, dass GCF den npm-Client nicht benutzt, um von der npm-Registrierung zu holen und ihn stattdessen direkt zu holen. Dies verhindert die Verwendung der standardmäßigen .npmrc -Datei oder einer anderen Methode, die der npm-Client kennt.

Sie müssen Ihr Paket lokal packen und installieren und es im Quellcode festschreiben:

%Vor%

Dadurch wird der lokale Tarball zu Ihrem package.json hinzugefügt und die Google Cloud-Funktionen können diesen verwenden.

Ich wünschte wirklich, sie würden .npmrc aus dem Projekt-Root-Pfad lesen oder alternativ könnten wir ihnen eine TOKEN als env-Variable übergeben.

Es gibt ein offenes Problem: Ссылка

    
Michael 28.03.2017 08:52
quelle
2

Google Cloud Functions unterstützt jetzt private NPM-Pakete.

  

Um ein privates npm-Modul zu verwenden, müssen Sie Anmeldeinformationen angeben   (Auth - Token) für die npm - Registrierung in einer .npmrc - Datei in der   Verzeichnis der Funktion. Sie können einfach die .npmrc-Datei kopieren, die das war   erstellt in Ihrem Home-Verzeichnis, wenn Sie sich mit dem npm in npm eingeloggt haben   Login-Befehl.

     

Fügen Sie die .npmrc-Datei nicht ein, wenn Sie nicht private verwenden   Repositories, da dies die Bereitstellungszeit für Ihre   Funktionen.

Quelle: Ссылка

    
Mike Nikles 20.12.2017 05:26
quelle
0

In Bezug auf Google Issue Tracker wurde dies behoben. Weitere Informationen finden Sie in der Dokumentation unter Google Cloud Platform .

Verwenden von privaten Modulen

Um ein privates npm-Modul zu verwenden, müssen Sie die Anmeldeinformationen (auth token) für die npm-Registrierung in einer .npmrc -Datei angeben, die sich im Verzeichnis der Funktion befindet. Sie können einfach die Datei .npmrc kopieren, die in Ihrem Home-Verzeichnis erstellt wurde, als Sie sich mit dem Befehl npm login in npm eingeloggt haben.

Fügen Sie die .npmrc -Datei nicht ein, wenn Sie keine privaten Repositories verwenden, da dies die Bereitstellungszeit für Ihre Funktionen verlängern kann.

Wenn das Problem weiterhin besteht, melden Sie sich bitte unter Google Issue Tracker erneut, um sie zu prüfen.

    
Pragati Singh 15.12.2017 19:13
quelle
-2

Ich hatte das gleiche Problem, aber dann wurde mir klar, dass ich vergessen hatte, die Abhängigkeit zur package.json -Datei hinzuzufügen, die sich im selben Verzeichnis wie Ihr index.js

befinden sollte     
joebro 20.03.2017 13:40
quelle