无法在GitHub Actions中使用webpack进行生产构建。

问题描述 投票:1回答:1

我试图使用下面的操作将我的项目部署到Firebase Hosting。

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 }}

该操作在以下情况下失败 为生产而建 步。我的 build-prod 脚本不 webpack -p --mode production.

这就是这个故障的错误信息。

> [email protected] 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>)
...

我一直在研究这个错误,我发现人们通过删掉 node_modules 前运行构建。于是我又运行了另一个动作,没有使用 npm install 部分。

它再次失败在 为生产而建但却出现了不同的、合理得多的错误。

> 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

在Github Actions中构建生产捆绑包的正确方法是什么?

谢谢!我正试图使用以下操作将我的项目部署到Firebase主机上

javascript node.js npm webpack github-actions
1个回答
1
投票

当我试图使用GitHub动作来构建&部署一个生产的Docker容器时,我遇到了完全相同的问题。

结果发现我这边的问题是由于Webpack在构建时没有访问任何环境变量(我的Webpack配置需要),这导致了和你上面一样的错误。

为了解决这个问题,我在我的构建命令中添加了以下一行。

--env.NODE_ENV=production

例如我的最终构建命令由容器调用,然后是:

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

希望能帮到你

© www.soinside.com 2019 - 2024. All rights reserved.