2017-10-27 4 views
1

Ich benutze Node.js als meinen Server und ich habe Probleme, meine JS und CSS-Dateien zu bedienen. Aus irgendeinem Grund kann index.html nicht scheinen, sie zu finden. Wenn ich meinen Browser laden, bekomme ich diesen Fehler:Warum kann Node.js meine Dateien nicht finden

enter image description here

Meine Dateisystemstruktur:

public 
    css 
     main.css 
     normalize.css 
    js 
     main.js 
     upload.js 
     plugins.js 
views 
    index.html 
server.js 

HTML

<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="x-ua-compatible" content="ie=edge"> 
    <title></title> 
    <meta name="description" content=""> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 

    <link rel="manifest" href="../public/site.webmanifest"> 
    <link rel="apple-touch-icon" href="../public/icon.png"> 

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="../public/css/normalize.css"> 
    <link rel="stylesheet" href="../public/css/main.css"> 

    <script src="../public/js/vendor/modernizr-3.5.0.min.js"></script> 
    <script 
     src="https://code.jquery.com/jquery-2.2.4.min.js" 
     integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" 
     crossorigin="anonymous"></script>  
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"> 
    </script> 
    <script src="../public/js/plugins.js"></script> 
    <script src="../public/js/main.js"></script> 
    <script src="../public/js/upload.js"></script> 
</head> 

server.js

var express = require("express"); 
var app = express(); 
var path = require("path"); 

app.use(express.static(path.join(__dirname, 'public'))); 

app.get('/', function(req, res){ 
    res.sendFile(path.join(__dirname, 'views/index.html')); 
}); 

Meine Vermutung ist, dass ich den Öffentlichen Ordner falsch in server.js aufbreche. Ich bekomme kann nicht GET/public, wenn ich versuche, auf diesen Ordner direkt im Browser zugreifen. Irgendwelche Experten können mir hier helfen?

Antwort

1

Die Art, wie Sie die statischen Assets laden, ist falsch. Express sucht die Dateien relativ zum statischen Verzeichnis, sodass der Name des statischen Verzeichnisses nicht Teil der URL sein sollte. Wenn Sie app.use(express.static(path.join(__dirname, 'public'))); verwenden, können Sie statische Ressourcen unter http://host:port/css/ * oder http://host:port/js/ * laden.

Wenn Sie app.use('/public', express.static(path.join(__dirname, 'public'))); verwenden, können Sie statische Assets aus dem öffentlichen Verzeichnis unter/public path laden. Zum Beispiel: http://host:port/public/css/ *

Verwandte Themen