【问题标题】:NestJS - proper way to copy static (non-imported) files to dist folderNestJS - 将静态(非导入)文件复制到 dist 文件夹的正确方法
【发布时间】:2020-02-23 21:41:44
【问题描述】:

我正在构建一个使用谷歌云 API(例如谷歌云存储)的应用。为了使用 api 对应用程序进行身份验证,我需要将包含身份验证凭据的 keyfile.json 文件的路径传递给 GCloud Api 初始化脚本。 IE。

const storage = new Storage({
      keyFilename: path.join(__dirname, '../../keyfile.json'),
});

我将keyfile.json 放入NestJS src 文件夹,但是当我构建应用程序时,该文件没有复制到dist

在 NestJS 中处理静态文件复制到 dist 的推荐方法是什么?

【问题讨论】:

  • 有什么理由没有root/static 或类似的文件?这样srcdist 的路径是一样的吗?
  • 哦...对。完全忘记了静态文件夹。谢谢。我认为现在就可以了
  • 或者,您是否排除了使用应用程序(运行时)的服务帐户和应用程序默认凭据?这样可以节省在您的来源旁边分发密钥。
  • @DazWilkin,不确定我是否理解。你能再解释一下你的想法吗?我确实认为我现在的做法并不是真正的方法
  • GCP 上的每个计算运行时都将代码作为服务帐户运行。您的代码可以(非常容易地)使用 App Default Credentials 作为此帐户进行身份验证。然后,只要该账户具有适当的 IAM 权限,您的代码就会被授权进行方法调用。请参阅此链接:cloud.google.com/docs/authentication/production 在所有这些情况下,如果您的代码在 (App|Compute|Kubernetes|Functions) 下运行,它将自动通过服务帐户进行身份验证。

标签: google-cloud-platform static google-cloud-storage gcloud nestjs


【解决方案1】:

这个问题很老,但因为它没有正确的答案:只需在 nest-cli.json

的 assets 数组中声明您的目录
{
    "collection": "@nestjs/schematics",
    "sourceRoot": "src",
    "compilerOptions": {
        "assets": [
            "resources/*"
        ]
    }
}

它仅适用于 monorepo 项目

来源:https://docs.nestjs.com/cli/monorepo#assets

【讨论】:

    【解决方案2】:

    在这里澄清一下并补充一点:

    • 当您创建和部署应用引擎时,应用引擎默认 将创建服务帐户并用作应用程序的身份 引擎服务。
    • App Engine 默认服务帐户与您的 Google 关联 云项目并代表您在其中运行的应用程序执行任务 应用引擎。
    • 默认情况下,App Engine 默认服务帐户具有编辑器 在项目中的作用。
    • 另外,您的 App Engine 应用使用 App Engine 的凭据
      默认为服务帐号。
    • 这就是您的应用程序调用 Google Cloud 的感觉神奇地 没有身份验证设置的 API

    You can find this info here.

    【讨论】:

      猜你喜欢
      • 2020-08-18
      • 2023-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多