[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?

odkaz Vyřešeno
6 Mlocik97
odpověděl/-a 10.3.2019

Vyřešil som to, a aj jednu ďalšiu vec.

Komentáře

  • vit.herman : super! 12.3.2019

Pro zobrazení všech 3 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.