You will not be able to send multiple file like that with res.sendFile
. The most straightforward thing that you can do here would be this:
Put your index.html
file and your html5game
directory into some common directory, e.g. called html
and put it where you have your Node.js program. An example directory layout would be:
/home/you/yourapp:
- app.js (your node program)
- package.json (your package.json etc)
- html (a new directory)
- index.html (your main html to serve)
- html5game (the directory with other files)
- (other files)
Now, in your Node program you can use something like this:
var path = require('path');
var express = require('express');
var app = express();
var htmlPath = path.join(__dirname, 'html');
app.use(express.static(htmlPath));
var server = app.listen(3000, function () {
var host = 'localhost';
var port = server.address().port;
console.log('listening on http://'+host+':'+port+'/');
});
This will serve all of your files (including index.html
) on addresses like:
Of course you still need to make sure that you refer to your assets in your index.html
file correctly, for example with:
<script src="/html5game/xxx.js"></script>
in the case of the example layout above.
The top level directory with your static assets (where you have your index.html
) is usually called static
, public
or html
but you can call it whatever you like, as long as you use the correct path in your call to express.static()
.
If you want to have your game available in some path other than the root path then you can specify it to app.use
. For example if you change this:
app.use(express.static(htmlPath));
to this:
app.use('/game', express.static(htmlPath));
Then instead of those URLs:
those URLs will be available instead:
A lot of questions here are related to serving static files with Express so I made a working example and posted it on GitHub so that people could have a working starting point and go from there:
See also some other answers where I talk about it in more detail: