我正在尝试使用以下操作将我的项目部署到 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/