What URL are you accessing?
If http://localhost:3000/ or http://localhost:3000/index.html then that sounds entirely expected.
If http://localhost:3000/home/ or http://localhost:3000/home/index.html then it should be working correctly, assuming you've set up a route to serve /home/ and/or /home/index.html.
> aah!.. I was writing localhost:3000/home, which loads only the
> index.html file.
>
> but by writing localhost:3000/home/ it loads everything!
>
> Why does writing localhost:3000/home just loads the html file?
More or less, because that's how web sites work. :) When you write a link like "./css/basic.css", or equivalently "css/basic.css", it means take the current page's URL up to the last "/", then append "css/basic.css" and load that. So if you request "http://localhost:3000/home", the URL up to the last "/" is "http://localhost:3000/", and then it appends "css/basic.css" to get "http://localhost:3000/css/basic.css".
Either write your links as absolute links so it doesn't matter what the current page's URL is (i.e. "/home/css/basic.css"), or ensure that there is only one URL that actually loads any given page, and make sure the relative links work from that page. For example, if you want "/home/" to be the canonical URL, then make it so that if the user requests "/home" it issues an http redirect to "/home/". If you were to serve static files with a web server like Apache, it would issue such a redirect for you automatically, but this is node, where you write the server yourself to do whatever you want it to do. Or perhaps there is a module you can add to do that, or a flag you can add when you define the static file directory.