首页 > 解决方案 > 部署到 AppEngine,我收到“文件太多”错误

问题描述

按照这个在 GCP AppEngine 中设置 ktor 的社区教程,我另外修改了“webapp”文件夹,使其成为一个完全基于反应的 SPA。npm start在 webapp 目录中运行正常,./gradlew appengineRun在外部目录中运行也是如此。但是在尝试部署时,它抱怨我有超过 10k 个文件。如果没有详细信息,似乎 node_modules 最有可能受到指责。

上网查了几个小时,老的解决方案是在app.yaml中添加一个'skipFiles'部分,而新的解决方案是创建一个.gcloudignore文件。在这两种情况下,列出node_modules都应该导致它们不被部署。但是,对于我正在关注的教程,我没有 app.yaml 文件 - 它显然是由各种 .xml 配置构建的,作为 appEngine gradle 插件的暂存步骤的一部分。我可以创建 .gcloudignore 文件,但它不会被推送到部署暂存文件夹(称为“build/staged-app”)。即使手动将其放置在那里,它也无法正确构建,因为有一个 skipFiles 和 .gcloudignore,它们不能共存。

我觉得有一些 1 行更改来完成这项工作,但我不知道它可能是什么。我尝试使用覆盖设置在项目中创建 app.yaml 文件,但部署步骤并没有选择它们 - 它似乎总是从头开始生成一个。

知道我怎样才能让它工作吗?也许我在做一些根本错误的事情?

标签: google-app-engine

解决方案


您没有app.yaml文件,因为您使用的是App Engine Gradle Plugin.

编辑

看来您必须遵循使用元素的排除语法。<exclude>在模式中,*表示文件或目录名称中的零个或多个任意字符,并**表示路径中的零个或多个目录。部署 AppEngine 应用程序时,不会上传与此元素匹配的文件。

<include>元素会覆盖包含所有文件的默认行为。一个<exclude>元素在所有模式之后应用(如果没有提供显式,则应用默认值<include>)。

以下示例演示如何将所有文件指定为静态文件(目录及其所有子目录.png中的文件除外):data/

<static-files>
  <include path="/**.png" />
  <exclude path="/data/**.png" />
</static-files>

您可以将其与您的路径一起使用node_modules


推荐阅读