framesurge / perseus

A state-driven web development framework for Rust with full support for server-side rendering and static generation.
https://framesurge.sh/perseus/en-US
MIT License
2.18k stars 89 forks source link

Perseus Deploy fails to generate the app every time by following tutorial. #332

Open strottos opened 1 month ago

strottos commented 1 month ago

This issue is reporting a bug in the code of Perseus. Details of the scope will be available in issue labels. The author described their issue as follows:

Every time I try and run perseus deploy of any variety it doesn't work but doesn't give much information. Firstly I'd like to know what failed and why, secondly I've followed the tutorial exactly so I'd expect it to compile. Wondering if it's some incompatibility with the latest cargo/rustc/etc maybe as I did do a rustup update recently before this, but it's the same for nightly and stable.

Output:

⢀ [1/4] 🔨 Generating your app...
⢀ [2/4] 🏗️  Building your app to Wasm...
⠠ [3/4] 📡 Building server...
    Blocking waiting for file lock on package cache
  [1/4] 🔨 Generating your app...❌
⠠ [2/4] 🏗️  Building your app to Wasm...
  [3/4] 📡 Building server...✅
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on package cache
    Blocking waiting for file lock on build directory
    Finished `release` profile [optimized] target(s) in 0.20s
     Running `dist/target_engine/release/fe`
  [1/4] 🔨 Generating your app...❌
  [2/4] 🏗️  Building your app to Wasm...✅
  [3/4] 📡 Building server...✅

Exit code: 1

If I run the program it outputs I get:

thread 'main' panicked at /home/strotter/.cargo/registry/src/index.crates.io-6f17d22bba15001f/perseus-0.4.2/src/turbine/mod.rs:105:18:
you must provide your own error pages in production
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Also perceus build and perceus serve work fine.

The steps to reproduce this issue are as follows:

Simply followed the tutorial. Using Centos Linux with rustc/cargo 1.82.0,

Also happens if I use the latest code in git. Suspect it's specific to my system but the same happens in a docker ubuntu container.

A minimum reproducible example is available at .

Tribble internal data dHJpYmJsZS1yZXBvcnRlZCxDLWJ1ZyxBLWNsaSxhdXRob3Itd2lsbGluZy10by1pbXBs
strottos commented 1 month ago

Actually looking into this even slightly, I see the error is coming from the following line:

            error_views: app
                .error_views
                .expect("you must provide your own error pages in production"),

Which makes it pretty clear it's something I've failed to do, however the CLI should really report what the error was and it doesn't. I think getting the CLI to output the error would be a big improvement and I would consider that sufficient for this issue.

arctic-hen7 commented 1 month ago

I think the CLI is reporting it, it's saying "you must provide your own error pages in production", and I'm pretty sure that's listed in the FAQ as well? What would have made it clearer? (Very happy to improve.)

strottos commented 4 weeks ago

I don't think the CLI did report it, think that was literally the only thing from this. The error itself is actually very clear but I had to run the program itself.

strottos commented 4 weeks ago

So this is the output from the CLI: `` Finishedreleaseprofile [optimized] target(s) in 0.20s Runningdist/target_engine/release/fe` [1/4] 🔨 Generating your app...❌


but it doesn't actually spit anything from stdout/stderr it looks like. 
arctic-hen7 commented 3 weeks ago

Oh I get it! Sorry, I was reading the output of the program itself. This will be to do with just stdout/stderr redirection probably, let me take a look at how we're doing this internally. In the mean time, --verbose should make this error appear.