【问题标题】:Vapor crashes when uses MongoSwift on ubuntu在 ubuntu 上使用 MongoSwift 时,Vapor 崩溃
【发布时间】:2019-09-30 16:22:52
【问题描述】:

我正在尝试为我的应用创建一个蒸汽 API。在我的本地机器(Mac OS)上,我所有的代码和我的 API 都运行良好,但是当我将它上传到我的 ubuntu 服务器时它崩溃了......

我已经做了以下代码:

vapor clean vapor update vapor build

这些命令都不会返回任何类型的错误,但是当我运行 vapor 时会发生以下情况:

root@rt-server:/usr/local/uprising/server# vapor run Running server ... root@rt-server:/usr/local/uprising/server#

搜索了一下并尝试解决我的问题,我发现如果我评论以下代码(configure.swift),我可以让蒸汽运行:

//     Register Mongo Client
let client = try! MongoClient()
let db = client.db("myDB")
let collection:MongoCollection<Document>
do {
    collection = try db.createCollection("myCollection")
} catch {
    collection = db.collection("myCollection")
}
// Create an unique index on timestamp
// because I expect only one daily
let indexOptions = IndexOptions(name: "timestamp", unique: true)
let model = IndexModel(keys: [ "timestamp": 1] , options: indexOptions)
do {
    try collection.createIndex(model)
} catch {
    print("Index already exist!")
}
services.register(client)

我有一些问题可能会帮助我弄清楚如何解决我的问题:

  • 如何在 ubuntu 上使用命令行调试 vapor?在我的 mac 中,当我使用 xcode 时它很容易......

  • 我可以测试我的 MongoDB C 驱动程序是否安装正确吗?

  • 有谁知道我做错了什么?它在我的 Mac 上完美运行...

对不起,我的英语不好...如果有人知道如何帮助我,我将不胜感激!

【问题讨论】:

  • 调试:swift-lldb ...注意每个平台的构建状态。

标签: swift mongodb ubuntu vapor


【解决方案1】:

swift MacOS 运行环境!= swift Linux 运行环境。这意味着,在 MacOS 中构建和运行完美的代码通常不会在 Linux 中编译。我实现了几个 Linux swift 项目,我的建议是:从项目开始就在 Linux 中开发 Linux swift 项目! 对于您的情况:

1) 在大多数情况下,Linux swift 项目使用 docker 在生产环境中运行。

2) 获取与 docker 容器环境相同的 Linux 主机

3) 将您的项目迁移到 Linux 主机

4) 在 Linux 主机中,您可以构建、执行和调试它。

另外,对于我的一个 Linux Swift 项目,当我需要访问 MongoDB 时,我测试了几个框架,MongoKitten 是最适合我的。

【讨论】:

    【解决方案2】:

    我是 MongoSwift 的开发人员之一。

    您是如何安装 C 驱动程序的?

    崩溃可能来自您正在执行 try! MongoClient() 的第一行,您可能还想尝试将其放入 try/catch 中。

    也只是一个注释,您可以将您的集合代码简化为:

    let collection = db.collection("myCollection")
    

    如果你想创建一个非默认选项的集合,你只需要使用createCollection。否则,集合将在您第一次使用时自动创建(在这种情况下,当您添加索引时)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多