为什么子文件夹未部署到 Google App Engine nodejs 应用程序

Why subfolders are not deployed to Google App Engine nodejs app

我正在开发 nodejs 网络应用程序并尝试在 Google 云中 运行 它。

只有根文件夹中的文件会使用 gcloud app deploy 命令部署到 Google App Engine。 appengine/express 示例应用程序依赖于子文件夹并且在部署时不起作用

重现步骤:

  1. 使用 package.json、app.yaml、app.js
  2. 创建简单的应用程序
  3. 创建一些文件夹,将一些文件放入其中
  4. 安装 gcloud,运行 从应用程序文件夹部署 gcloud 应用程序
  5. 如果您需要位于子文件夹中的任何本地模块,部署将失败
  6. 如果部署成功,请转到 google 云控制台、应用引擎、版本,单击实例列中的数字 - 您将看到实例列表,右键单击 ssh。
  7. 在 ssh 控制台中 运行“container_exec gaeapp /bin/bash”,然后是“cd app”,然后是“ls
  8. 您会看到应用程序未部署任何文件夹

这是环境、gcloud 实用程序的问题还是我做错了什么?

gcloud app deploy 尊重上传文件时要跳过的两个子文件夹列表:

  1. 目录中的任何 .dockerignore 文件。使用 nodejs 运行时,会为您创建一个包含以下条目:

    node_modules
    .dockerignore
    Dockerfile
    npm-debug.log
    .git
    .hg
    .svn
    
  2. app.yaml 文件中的 skip_files 条目。默认匹配以下正则表达式的文件:

    - ^(.*/)?#.*#$
    - ^(.*/)?.*~$
    - ^(.*/)?.*\.py[co]$
    - ^(.*/)?.*/RCS/.*$
    - ^(.*/)?\..*$
    

如果丢失的目录与其中任何一个都不匹配,则可能存在另一个问题。在清理个人数据后,您应该提交一个问题 here 并附上与部署相关的日志(在 gcloud info --format="value(logs.logs_dir)" 给出的位置)。

就是说,我只是尝试在 node.js samples 中为 App Engine 部署 appengine/express 示例,并且能够在 Cloud SDK 版本 138.0.0 上没有任何问题。