1

从 Crow 添加所有必要的头文件后,我终于设法Hello World在我的 localhost 端口上运行并获取输出。当我尝试使用mustache带有简单 HTML 文件的命令来呈现网页时,程序会编译,但我只得到一个空白页。请帮忙。

主文件

#include <iostream>
#include "crow.h"

int main(int argc, const char * argv[]) {

crow::SimpleApp app;
crow::mustache::set_base(".");

CROW_ROUTE(app, "/")([](){
    crow::mustache::context ctx;
    auto main_page = crow::mustache::load("site.html");
    return main_page.render();
});

app.port(18080)
//    .multithreaded()
.run();
return 0;
}

网站.html

<!DOCTYPE html>
<html>
 <body>
    <h1>My First Heading</h1>
    <p>My first paragraph.</p>
 </body>
</html>
4

2 回答 2

1

我使用 Crow 的经验是使用 Docker,我在加载静态文件时遇到了同样的问题。要加载 html,您不能使用相对路径,而必须使用绝对路径。例如,我将 main.cpp 文件放在名为“server”的文件夹中,将 index.html 放在名为“static”的文件夹中。我一开始说

auto main_page = crow::mustache::load("../static/index.html"); // "../" means go to parent folder

这对我不起作用,但您可以继续尝试。相反,我使用了它存储在我的 Docker 容器中的确切目录。“usr/src/web/mysite/static/index.html”

于 2021-05-18T23:44:21.990 回答
0

另一种解决方案是使用其他服务器(例如 Node)呈现静态文件,并使用 Crow 在来自 C++ 服务器的响应中添加 CORS 标头。

于 2020-07-20T22:16:09.670 回答