2 votes

Impossible de construire pour la production dans les actions GitHub en utilisant webpack

J'essaie de déployer mon projet sur Firebase Hosting en utilisant l'action suivante :

on:
  push:
    branches:
      - master
  pull_request:
    branches:
      - master

jobs:
  deploy_to_firebase_hosting:

    runs-on: ubuntu-latest

    steps:
      - name: Checkout the repository
        uses: actions/checkout@master

      - name: Install Dependencies
        run: npm install

      - name: Build for production
        run: npm run build-prod

      - name: Deploy to Firebase
        uses: w9jds/firebase-action@master
        with:
          args: deploy --only hosting
        env:
          FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}

Les actions échouent dans les cas suivants Construire pour la production pas. Mon build-prod script fait webpack -p --mode production .

Il s'agit du message d'erreur correspondant à cet échec :

> project-name@1.0.0 build-prod /home/runner/work/project-name/project-name
> webpack -p --mode production

/home/runner/work/project-name/project-name/node_modules/webpack-cli/bin/cli.js:93
                throw err;
                ^

TypeError: Cannot convert undefined or null to object
    at Function.keys (<anonymous>)
...

J'ai fait des recherches sur cette erreur et j'ai découvert que les gens la résolvent en supprimant les éléments suivants node_modules avant de lancer la construction. J'ai donc lancé une autre action, sans l'option npm install partie.

Il échoue à nouveau le Construire pour la production mais avec une erreur différente et beaucoup plus raisonnable :

> webpack -p --mode production

webpack not installed

Install webpack to start bundling: 
  $ npm install --save-dev webpack

npm ERR! code ELIFECYCLE
npm ERR! errno 1

Quelle est la bonne façon de construire un bundle de production dans Github Actions ?

Gracias.

1voto

Brandon Dooley Points 64

J'ai eu exactement le même problème en essayant d'utiliser les actions GitHub pour construire et déployer un conteneur Docker de production.

Il s'est avéré que le problème de mon côté était dû au fait que Webpack n'avait accès à aucune variable d'environnement (ce que ma configuration Webpack exigeait) au moment de la construction, ce qui provoquait la même erreur que celle que vous avez reçue ci-dessus.

Pour résoudre ce problème, j'ai ajouté la ligne suivante à ma commande de construction :

--env.NODE_ENV=production

Par exemple, ma dernière commande de construction appelée par le conteneur était alors :

node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --env.NODE_ENV=production --progress --config webpack.prod.js

J'espère que cela vous aidera !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X