Saya menggunakan Node.js sebagai server saya dan saya mengalami beberapa masalah dalam menyajikan file JS dan CSS saya. Untuk beberapa alasan, index.html sepertinya tidak dapat menemukannya. Ketika saya memuat browser saya, saya mendapatkan kesalahan ini:

enter image description here

Struktur sistem file saya:

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'));
});

Dugaan saya adalah saya salah menyajikan folder publik di server.js. Saya mendapatkan Cannot GET /public ketika saya mencoba mengakses folder itu secara langsung di browser. Adakah pakar yang dapat membantu saya di sini?

1
kevin_b 27 Oktober 2017, 05:16

1 menjawab

Jawaban Terbaik

Cara Anda memuat aset statis salah. Express mencari file relatif terhadap direktori statis, jadi nama direktori statis tidak boleh menjadi bagian dari URL.

Jika Anda menggunakan app.use(express.static(path.join(__dirname, 'public')));, maka Anda dapat memuat aset statis di http://host:port/css/< /a>* atau http://host:port/js/* .

Jika Anda menggunakan app.use('/public', express.static(path.join(__dirname, 'public')));, maka Anda dapat memuat aset statis dari direktori publik di / jalur publik. Misalnya, http://host:port/public/css/*

3
user-developer 27 Oktober 2017, 06:16