Crow C++框架HTML页面在Xcode上编译后为空白

问题描述 投票:0回答:3

从 Crow 添加所有必要的头文件后,我终于设法运行并在我的本地主机端口获得

Hello World
输出。当我尝试使用带有简单 HTML 文件的
mustache
命令呈现网页时,程序编译但我只得到一个空白页面。请帮助。

main.cpp

#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;
}

site.html

<!DOCTYPE html>
<html>
 <body>
    <h1>My First Heading</h1>
    <p>My first paragraph.</p>
 </body>
</html>
html c++ xcode web-frameworks crow
3个回答
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”


0
投票

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


0
投票

实际上,您可以简单地创建名为“模板”的文件夹并将所有 html 放在那里,然后按名称加载它们。 这是官方示例:https://crowcpp.org/master/getting_started/a_simple_webpage/

© www.soinside.com 2019 - 2024. All rights reserved.