javascript - 无法使用 webpack 在 GitHub Actions 中为生产构建

标签 javascript node.js npm webpack github-actions

我正在尝试使用以下操作将我的项目部署到 Firebase 托管:

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 .

这是此故障的错误消息:
> 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>)
...

我一直在研究这个错误,我发现人们通过删除 node_modules 来解决它在运行构建之前。所以我运行了另一个 Action ,没有 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 中构建生产包的正确方法是什么?

谢谢!

最佳答案

在尝试使用 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

希望这可以帮助!

关于javascript - 无法使用 webpack 在 GitHub Actions 中为生产构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59447822/

相关文章:

node.js - npm 更新包括预发布

javascript - 有什么方法可以知道客户端已经完全下载文件了吗?

javascript - 动态添加 onclick 事件到 anchor 标记,不起作用

javascript - Facebook 移动版 Safari 无法正常工作

javascript - gulp src 忽略除一个文件夹以外的所有文件夹中的文件

node.js - 使用 axios 时套接字挂起

javascript - 如何使用 Express 提供部分动态 HTML 页面?

javascript - Webpack 2 从子目录导入

javascript - 阻止 package.json 更新包

javascript - Angular Material 10 范围 datepicker 和 moment.js 错误 : date. getFullYear 不是函数