Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

404 Failed to load resource Deploying Flutter Web App to GitHub Pages

I am trying to deploy my Flutter app to GitHub Pages. App runs fine with flutter run -d chrome and builds successfully using flutter build web --release

I push the code to my repository: https://github.com/learyjk/superpacecalcweb

Deployment Activity Log shows successful deployment. But when I click the "View Deployment" button I just get a blank page. Javascript console says:

Failed to load resource: server responded with status of 404 () https://learyjk.github.io/main.dart.js

I have tried to append /index.html to the end of the URL as well but no luck.

Any ideas? The error output is not very verbose, so I don't quite know where to start...

GitHub pages link: https://learyjk.github.io/superpacecalcweb/

Thank you!

enter image description here

like image 910
learyjk Avatar asked Jan 12 '21 17:01

learyjk


2 Answers

How to automate the proposed solution

When building the project use:
flutter build web --release --base-href="/yourGithubRepoName/"
It will do all the required subsitutions for you.

In this case the command would be:
flutter build web --release --base-href="/superpacecalcweb/"

like image 51
Cristian Davide Conte Avatar answered Nov 16 '22 06:11

Cristian Davide Conte


There is <base href=''/> tag in your index.html. Change it to the base path of your github repo. In this case this would be <base href="/superpacecalcweb/"/>. If you don't have it you can add it inside the <head> tag.

Basically the problem is flutter tries to locate main.dart.js file without considering the base path of your deployment as you haven't configured the base tag with correct path. This is common issue while deploying flutter web app or any web app for the sake if the hosting provider adds an additional path to main domain.

You can see that the main.dart.js is available through the following link. https://learyjk.github.io/superpacecalcweb/main.dart.js

Please do note that while testing locally you will still have to set it back to href="/". Otherwise the local deployment won't work. There is an open issue to make this configurable.

like image 40
Abhilash Chandran Avatar answered Nov 16 '22 07:11

Abhilash Chandran