1

我有以下项目布局(已签约):

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

我试图createTables.sql在运行时读取文件,但FileManager.fileExists()说它不存在。我通过使用#filein得到了路径main.swift

let path = URL(fileURLWithPath: #file).deletingLastPathComponent().path + "/Models/SQL/createTables.sql"

打印出路径,似乎是正确的。我猜由于 Heroku 的临时文件系统,源代码树是不可访问的。我怎样才能解决这个问题并在运行时读取文件?

4

1 回答 1

3

用于drop.workdir在编译后获取项目目录。

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

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

于 2016-12-26T20:26:32.103 回答