Routing Client Side/Packaging for Deployment
See original GitHub issueExpected behavior
I’ve written some routes that are not behaving as expected. I initially started off with the create-choo-app
scaffolding; however, that required turned out to only be a good idea for development. When it came to deployment, my dynamic routes were all broken when I tried to push up my dist
folder to s3 (where I am going to eventually host my choo site). So rather than use the fancy bankai package, I thought I would use browserify to get everything working. Again, this caused all my routes to break. Am I missing something, or do you have to run something like budo or bankai in order to serve the page up? Here is basically what I am doing:
index.html:
<html>
<head>
<script src='bundle.js'> </script>
</head>
<body>
</body>
</html>
index.js
var html = require('choo/html')
var choo = require('choo')
var app = choo()
app.route('/', placeholder)
app.route('/:user', placeholder)
app.route('/:user/:repo', placeholder)
app.route('/:user/settings', placeholder)
app.route('/404', placeholder)
function placeholder (state) {
console.log(state.params)
return html`<body>placeholder</body>`
}
app.mount('body')
browserify command:
browserify index.js -o bundle.js
When I run a simple http server like python -m simpleHttpServer 8000
my initial route comes up fine. But then if I attempt to type localhost:8000/homer
into the address bar I get a 404 error.
I would expect that I should get “placeholder”.
I guess ultimately my question is how do I get everything nice and packaged in the browser so that I can manually type routes in the address bar and get the results I am anticipating? Thanks!
Issue Analytics
- State:
- Created 5 years ago
- Comments:6 (1 by maintainers)
Top GitHub Comments
There is an ongoing discussion over at https://github.com/http-party/http-server/issues/757#issuecomment-984590971
What I am looking for primarily is
@AcidLeroy the python simpleHTTPServer knows to rewrite the route
/
->/index.html
. That’s why that route works. But it doesn’t know to rewrite/homer
, doesn’t find a file called “homer”, so it responds with a 404. You need to use a server that you can configure to rewrite the routes you want to use with your choo app.At my work we use Caddy with its built-in rewrite directive for this purpose. Any full-featured HTTP server (nginx, Apache, etc.) can accomplish this.