Dans mon projet, nous utilisons Nodejs avec TypeScript pour le développement de l'application de moteur de Google Cloud APP. Nous avons notre propre mécanisme de construction pour compiler des fichiers TS dans JavaScript, puis les collecter dans un package exécutable complet, de sorte que nous ne voulons pas relâcher sur Google Cloud pour installer des dépendances, nous souhaitons télécharger tous les packages de nœuds à l'intérieur du nœud_modules vers Cloud Google.
Mais il semble que Google Cloud ignore toujours le dossier Node_Modules et exécutera une installation NPM pendant le déploiement. Même j'ai essayé de supprimer 'Skip_files: - ^ node_modules $' d'app.Yaml, il ne fonctionne pas, Google Cloud installera toujours des paquets par lui-même.
Est-ce que quelqu'un a des idées de cela de déployer l'application de nœud avec node_modules ensemble? Merci. P>
3 Réponses :
J'ai observé le même problème.
Ma solution de contournement était de renommer Je le restaore au nom d'origine sur l'installation, avec le fichier (partiel) Vous pouvez confirmer que Appengine bande votre nœud_modules / code> à nœud_modules_hack / code> avant de déployer. Cela empêche l'appengine de le retirer. P> package.json code> fichier: p> nœud_modules / code> en regardant l'image Docker qu'il génère. Vous pouvez le trouver sur le page d'images . Ils vous donnent une ligne de commande que vous pouvez exécuter sur la console de nuages pour le chercher. Ensuite, vous pouvez exécuter docker exécuter NPM Installez code>, donc une fois que vous utilisez la solution de contournement ci-dessus, vous verrez votre nœud_modules / code> là-bas. P> p>
mv -fn node_modules_hack node_modules code> <- Quelle langue est-ce?
Je ne sais pas si c'est une bonne idée car il y a beaucoup de packages NPM qui sont spécifiques à la plate-forme (OS) Node_Modules spécifiques et pré-installés pourraient échouer sans que vous ayez une idée de ce qui s'est passé
La nouvelle solution consiste à autoriser ci-dessous est le node_modules code> dans .gclouceignore code>. .gclouignore code> (une exécution initiale de < Code> GCloud App déployer code> génère si vous n'en avez pas déjà un déjà) avec le changement dont vous avez besoin: p>
Autoriser Application du déploiement du moteur est Switched to BuildPacks depuis oct / nov. 2020. Le cloud Build Étape déclenché par il supprimera toujours le téléchargement téléchargé Voici le code Buildpack associé:
https://github.com/GoogleCloudPlatform/ Buildpacks / BLOB / 89F4A6BA669437A47B482F4928F9742F4928F974D8B3EE666D / CMD / NodeJs / Fil / Main.go # L60 P> Il s'agit d'un comportement souhaitable depuis téléchargé Ainsi, afin de passer des dépendances NPM / Fils Installation dans Cloud Build, je suggérerais: P> Utilisez Linux Runner CI avec la même version de nœud que vous utilisez dans l'environnement de moteur d'application. P>
li>
Créez des archives de goudron avec votre garder Déballez note Github Actions Workflow Pour emballer et télécharger vos dépendances pour le déploiement des moteurs App pourrait ressembler à ceci: p> node_modules code> dans .gclouceignore code> ne fonctionne plus. nœud_modules CODE> Dossier et réinstallez les dépendances à l'aide de la fil ou du NPM. P> nœud_modules code> pourrait venir d'une plate-forme différente et pourrait casser la compatibilité avec Linux coureur utilisé pour exécuter votre application dans l'environnement de moteur d'application. P>
node_modules code>, pour ne pas télécharger de multitude de fichiers sur chaque application gcloud Applob p>. p>. p>.
li>
nœud_modules code> diranté ignoré dans .gclouignore code>. p>
li>
node_modules.tar.gz code> archive dans PreInstall code> Script. N'oubliez pas de garder la compatibilité en arrière dans les archives de goudron (développement local, etc.): p>
li>
ul> ... || vrai code> chose. Cela garantira que le script Preinstall renvoie le code de sortie zéro quel que soit l'installation de fil / NPM continuera. P> deploy-gae:
name: App Engine Deployment
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# Preferable to use the same version as in GAE environment
- name: Set Node.js version
uses: actions/setup-node@v2
with:
node-version: '14.15.4'
- name: Save prod dependencies for GAE upload
run: |
yarn install --production=true --frozen-lockfile --non-interactive
tar -czf node_modules.tar.gz node_modules
ls -lah node_modules.tar.gz | awk '{print $5,$9}'
- name: Deploy
run: |
gcloud --quiet app deploy app.yaml --no-promote --version "${GITHUB_ACTOR//[\[\]]/}-${GITHUB_SHA:0:7}"