【问题标题】:Why Firebase deploy's full react app instead of deploying build directory files?为什么 Firebase 部署完整的反应应用程序而不是部署构建目录文件?
【发布时间】:2021-03-24 13:27:15
【问题描述】:

所以我使用 create-react-app 工具链创建了一个反应应用程序。 编写了一些组件并运行

firebase init

npm run build

firebase deploy --only hosting

现在,当我在 chrome dev-tools 的源选项卡中检查我的实时应用程序时,它显示了 react 应用程序的所有源文件,包括原样的 cmets。

firebase 不应该只部署构建目录中针对生产进行优化和缩小的块吗?

我运行了网络测试以查看正在获取的文件类型,令人惊讶的是,它只获取了构建目录中的块。那么我的 src 目录中的所有文件是如何以原始形式存在的呢?

现在浏览器可能会从块中构造它们。那么它似乎是一个反应构建问题,它不会在生产构建中删除 cmets 和 uglify。

但我也分析了构建目录中的 js 块,它们没有嵌入 cmets。

这是我的 firebase 配置:

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


【问题讨论】:

  • 我们看不出你是否真的配置了你的部署,所以很难说为什么它没有达到你的预期。
  • @jonrsharpe 添加了 firebase 配置。先生看看

标签: reactjs firebase firebase-hosting firebase-cli


【解决方案1】:

所以我找到了解决方案。

而且它与 Firebase 托管无关。

需要配置 react 的构建来解决这个问题。 基本上,我们必须停止 react build 生成源映射。

看起来构建目录中的这些源映射包含我们部署到 firebase 的原始 js 文件。

将 package.json 中的 react 构建命令更改为


"build": "GENERATE_SOURCEMAP=false react-scripts build",

【讨论】:

  • 如果您禁用源映射,您将很难在生产环境中调试问题。
  • @abraham 我没有看到任何 Web 应用托管源地图并将其源代码公开
  • 生产中的运输源地图是actually a good thing。需要记住的是,JS 是在用户的设备上执行的,如果他们想对其进行逆向工程,你无法阻止他们。
  • @abraham 嗯,这是真的。我现在对逆向工程了解不多,事实上即使我对调试和测试也不太了解。
猜你喜欢
  • 2021-06-15
  • 1970-01-01
  • 2022-08-07
  • 1970-01-01
  • 2013-02-08
  • 2018-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多