I am learning to use Node.js. Currently, I have a folder structure that looks like the following:
index.html server.js client index.html subs index.html page.html res css style.css img profile.png js page.js jquery.min.js server.js is my webserver code. I run this from a command-line using node server.js. The contents of that file are:
var restify = require('restify'); var server = restify.createServer({ name: 'Test App', version: '1.0.0' }); server.use(restify.acceptParser(server.acceptable)); server.use(restify.queryParser()); server.use(restify.bodyParser()); server.get('/echo/:name', function (req, res, next) { res.send(req.params); return next(); }); server.listen(2000, function () { console.log('%s running on %s', server.name, server.url); }); As you can see, this server relies on RESTIFY. I've been told I must use RESTIFY. However, I can't figure out how to serve static files. For instance, how do I server the *.html, *.css, *.png, and *.js files in my app?
Thank you!
From the documentation:
server.get(/\/docs\/public\/?.*/, restify.plugins.serveStatic({ directory: './public' })); But this will search files in the ./public/docs/public/ directory.
If you want to not append request path to it, use appendRequestPath: false option.
I prefer to use __dirname key here:
server.get(/\/public\/?.*/, restify.plugins.serveStatic({ directory: __dirname })); The value of __dirname is equal to script file directory path, which assumed to be also a folder, where is public directory.
And now we map all /public/.* urls to ./public/ directory.
Now also exists serveStaticFiles plugin:
server.get('/public/*', // don't forget the `/*` restify.plugins.serveStaticFiles('./doc/v1') ); // GET /public/index.html -> ./doc/v1/index.html file
According to my current restify version (v5.2.0)
the serveStatic has been moved into plugins, so the code would be like this
server.get( /\/(.*)?.*/, restify.plugins.serveStatic({ directory: './static', }) ) Syntax above will serve your static files on folder static. So you can get the static file like http://yoursite.com/awesome-photo.jpg
For some reason if you want to serve the static files under specific path like this http://yoursite.com/assets/awesome-photo.jpg for example.
The code should be refactored into this
server.get( /\/assets\/(.*)?.*/, restify.plugins.serveStatic({ directory: `${app_root}/static`, appendRequestPath: false }) ) The option appendRequestPath: false above means we dont include assets path into the file name
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With