从 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>
我使用 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”
替代解决方案是使用另一个服务器(例如 Node)呈现静态文件,并使用 Crow 在 C++ 服务器的响应中添加 CORS 标头。
实际上,您可以简单地创建名为“模板”的文件夹并将所有 html 放在那里,然后按名称加载它们。 这是官方示例:https://crowcpp.org/master/getting_started/a_simple_webpage/