Heroku:如何读取文件?

Heroku: how to read file?

我有以下项目布局(合同):

project_root
└── Sources
    └── App
        ├── main.swift
        └── Models
            └── SQL
                └── createTables.sql

我试图在运行时读取 createTables.sql 文件,但 FileManager.fileExists() 说它不存在。我通过在 main.swift:

中使用 #file 获得了路径
let path = URL(fileURLWithPath: #file).deletingLastPathComponent().path + "/Models/SQL/createTables.sql"

打印出来的路径,好像是对的。 我猜测由于 Heroku 的 ephemeral filesystem,源代码树无法访问。我怎样才能解决这个问题并在运行时读取文件?

使用drop.workdir获取编译后的工程目录

try String(contentsOfFile: drop.workDir + "Resources/SQL/createTables.sql")

请注意,我还将您的文件从 Sources 移到了 Resources。 Vapor 的项目布局并不是一成不变的,但目前的规则似乎是前者用于 Swift 文件,后者用于辅助文件。