Zeit now:api 需要来自静态构建步骤的 json 文件

Zeit now: api requires json file from static-build step

我正在编写一个网络应用程序并尝试将其部署到 Zeit's Now。

我的 now.json 包含:

"builds": [
    {
      "src": "build.sh",
      "use": "@now/static-build",
      "config": { "distDir": "out" }
    },
    { "src": "api/download/index.ts", "use": "@now/node" }
  ],

api/download/index.ts 我试图从 static-build 输出中导入一个 json 文件:

import slugs from "../../out/data/slugs.json";

但我在日志中得到 4:19 Cannot find module '../../out/data/slugs.json'.。据我所知,static-build 进展顺利。

有没有办法从 static-builddistDir 导入文件?

UPD

我在这里概述应该如何修复它:正如 Paulo 指出的那样,我必须同时做这两件事:

{
      "src": "api/download/index.ts",
      "use": "@now/node",
      "config": {
        "includeFiles": ["data/**"]
      }
    }

并在 package.json 中:

"now-build": "<generate content of ./data>"

似乎 now 为每个构建器使用单独的目录,所以这就是为什么第一个构建器的 data 目录对第二个构建器不可用的原因。

使用 configuration 你应该有这个:

  "builds": [
    {
      "src": "api/download/index.ts",
      "use": "@now/node",
      "config": {
        "includeFiles": [
          "out/data/**"
        ]
      }
    }
  ]

但是,您需要确保此文件可用于您的 lambda。如果它已生成,那么您可以在 package.json 中使用 "now-build" 脚本来创建它。

根据以上信息,我认为您应该执行以下操作:

  "builds": [
    {
      "src": "api/download/index.ts",
      "use": "@now/node",
      "config": {
        "includeFiles": [
          "json/**"
        ]
      }
    }
  ]

创建一个名为 json 的新文件夹,并将需要的文件移动到其中。请记住,includeFiles 配置是相对于项目的根目录的(默认情况下 now.json 存在)。