【问题标题】:React Deployment to Firebase from Gitlab fails with error: to Specified public directory 'build' does not exist, can't deploy hosting to site从 Gitlab 到 Firebase 的 React 部署失败并出现错误:指定的公共目录“构建”不存在,无法将托管部署到站点
【发布时间】:2021-01-20 12:43:12
【问题描述】:

这是 firebase.json 文件

{
  "hosting": {
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

这是我的.gitlab-ci.yml

image: tragopoulos/firebase:latest

stages:
  - build
  - test
  - deploy

cache:
  paths:
    - node_modules/
  key: "$CI_BUILD_REPO"

build:
  stage: build
  image: node
  script:
    - echo "# Start building App"
    - npm install
    - npm build
    - echo "# Build successfully!"
  artifacts:
    expire_in: 1 hour
    paths:
      - "/build"
      - node_modules/

test:
  stage: test
  image: node
  script:
    - echo "# Testing App"
    - npm install
    - CI=true npm test
    - echo "# Test successfully!"

deploy-develop:
  stage: deploy
  environment: tragopoulos-portfolio-dev
  only:
    - develop
  before_script:
    - npm install
    - npm build
  script:
    - echo "# Deploying App"
    - firebase use tragopoulos-portfolio --token $FIREBASE_TOKEN
    - firebase deploy --only hosting -m "Pipeline $CI_PIPELINE_ID Build $CI_BUILD_ID"
    - echo "# Deployed successfully!"

这是错误:

我尝试了“build”、“/build”、“/build/”、“/PROJECT_NAME/build”,但没有任何效果。我也不知道如何$ echo 构建路径,所以我可以在项目中调试它。在 Angular 中,“dist”可以正常工作。有什么想法吗?

【问题讨论】:

  • 这是一个愚蠢的问题,但 build 文件夹在部署后是否存在?我和"public": "build" 有相同的设置,它就像魅力一样。在部署之前我运行npm run build 只是为了确定。
  • @norbitrial 我添加了.gitlab-ci.yml。也许你可以在那里看到问题。感谢您的回复。
  • 可能我会先尝试结合before_scriptscript。在部署之前将安装和构建步骤添加到script 中,看看情况如何。也许这些步骤在不同的容器中运行(对 gitlab-ci 不是很熟悉,只是猜测)并且构建文件夹对于部署步骤是不可见的。
  • 您正在使用npm build,您可能希望成为npm run build,因为npm build 用于构建节点包,而不是CRAs 构建命令。
  • @norbitrial,请随时添加您的评论作为答案,以便我解决。

标签: reactjs firebase gitlab-ci firebase-hosting


【解决方案1】:

根据评论部分的对话,在部署步骤中似乎没有创建build 文件夹。很可能它们在不同的容器中运行。因此firebase deploy 命令找不到必要的build 之一。

我会尝试从.gitlab-ci.yml 中删除before_script,并将其步骤与script 合并为:

  script:
    - npm install
    - npm build
    - echo "# Deploying App"
    - firebase use tragopoulos-portfolio --token $FIREBASE_TOKEN
    - firebase deploy --only hosting -m "Pipeline $CI_PIPELINE_ID Build $CI_BUILD_ID"
    - echo "# Deployed successfully!"

这样您就可以为部署步骤准备好build 文件夹。

【讨论】:

    猜你喜欢
    • 2021-06-14
    • 1970-01-01
    • 2019-02-09
    • 2020-01-14
    • 1970-01-01
    • 2020-11-23
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多