[node.js] return indexu alebo určitého súboru rubrika: Programování: JavaScript
6
Mlocik97
položil/-a 18.2.2019
upravil/-a 18.2.2019
Zdravím,
ako môžem v node.js (na Heroku), spraviť jednoduchý server, ktorý bude vraciať index v prípade ľubovolnej URL adresy nepredstavujúci konkrétny súbor (napr. súbor s príponami .html, .css, .js, .json, .xml, .png, atď), s tým že ak bude zaslaná požiadavka na konkrétny súbor, tak v takom prípade sa vráti tento súbor alebo sa vráti index a vypíše sa 404 (v alertu) v prípade že neexistuje.
Vopred ďakujem.
(p.s. ak je možnosť pri vrátení zdrojového súboru aby sa otvoril automaticky v source teda URL:
view-source:https://domain.com/mojejson.json
)
chcem to bez frameworku (bez express a pod.)
zatím mám:
var http = require('http'); var fs = require('fs'); var path = require('path'); http.createServer(function (req, res) { var filePath = './client/' + req.url; if (filePath == './') { filePath = './client/index.html'; } var extname = String(path.extname(filePath)).toLowerCase(); var mimeTypes = { '.html': 'text/html', '.css': 'text/css', '.js': 'text/javascript', '.json': 'application/json', '.xml': 'application/xml', '.ico': 'image/x-icon', '.png': 'image/png', '.jpg': 'image/jpg', '.gif': 'image/gif', '.wav': 'audio/wav', '.mp4': 'video/mp4', '.woff': 'application/font-woff', '.ttf': 'application/font-ttf', '.eot': 'application/vnd.ms-fontobject', '.otf': 'application/font-otf', '.svg': 'application/image/svg+xml' }; var contentType = mimeTypes[extname] || 'application/octet-stream'; fs.readFile(filePath, function (error, content) { if (error) { if (error.code == 'ENOENT') { fs.readFile('./404.html', function (error, content) { res.writeHead(200, { 'Content-Type': contentType }); res.end(content, 'utf-8'); }); } else { res.writeHead(500); res.end(error.code); res.end(); } } else { res.writeHead(200, { 'Content-Type': contentType }); res.end(content, 'utf-8'); } }); }).listen(process.env.PORT);
a ešte jedna vec, ako je to s portami na Heroku? akým spôsobom mám definovať port na Heroku na server-sidu?
Pro zobrazení všech 3 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře