kilork / actix-web-static-files

actix-web static files as resources support
The Unlicense
75 stars 18 forks source link

trait bound `ResourceFiles: HttpServiceFactory` is not satisfied #34

Closed kkharji closed 3 years ago

kkharji commented 3 years ago

Hey @kilork, I'm trying to use your awesome crate but I'm getting an error saying the trait 'HttpServiceFactory' is not implemented forResourceFiles`

my Cargo.toml:

[package]
name = "server"
version = "0.1.0"
edition = "2018"

[dependencies]
actix-web-static-files = "3.0.5"
actix-web = "4.0.0-beta.3"  

[build-dependencies]
actix-web-static-files = "3.0.5"

main.rs

use actix_web::{App, HttpServer};
use actix_web_static_files;

include!(concat!(env!("OUT_DIR"), "/generated.rs"));

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(move || {
        let generated = generate();

        App::new().service(actix_web_static_files::ResourceFiles::new(
            "/static", generated,
        ))
    })
    .bind("127.0.0.1:8080")?
    .run()
    .await
}

build.rs

use actix_web_static_files::generate_resources;
use std::{env, path::Path};

fn main() {
    let out_dir = env::var("OUT_DIR").unwrap();
    let generated_filename = Path::new(&out_dir).join("generated.rs");
    generate_resources("./static", None, generated_filename, "generate")
        .expect("can't collect resources");
}
kkharji commented 3 years ago

okay changing actix-web to 3.* made it work. but now my issue is that navigating to 127.0.0.1:8080 shows nothing. I have a single file in static called index.html with a hello world message.

kilork commented 3 years ago

You probably need to replace

App::new().service(actix_web_static_files::ResourceFiles::new(
            "/static", generated,
        ))

with

App::new().service(actix_web_static_files::ResourceFiles::new(
            "/", generated,
        ))

Good luck!

kkharji commented 3 years ago

Thanks @kilork