JS-bestand krijgt een net::ERR_ABORTED 404 (niet gevonden)

Ik probeer een eenvoudige Io-web-chat te maken.
Ik wilde onlangs mijn <script>in mijn html-bestand scheiden naar een extern js-bestand.

dit is mijn zeer eenvoudige mappenstructuur:

Chat
|-- index.html
|-- index.js
`-- server.js

Relevant deel van html-bestand:

<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script src="index.js"></script>
</body>
</html>

Relevant deel van index.js-bestand:

$(function() {
  //Initialize variables
  var $messageArea = $('#messages');
  var $InputMessage = $('#InputMessage');
  var $InputName = $('#InputName');
  //Initialize Socket
  var socket = io();
  //Send server Your message
  socket.emit('chat message', $InputMessage.val());
});

Relevant deel van server.js-bestand:

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

Ik heb ook geprobeerd mijn bestanden in deze openbare typestructuur te plaatsen die ze hebben op de socket.io-voorbeelden:

Chat
|-- Public
|   |-- index.html
|   `-- index.js
`-- server.js

in dat geval heb ik het volgende gewijzigd:
src="/index.js"in html
/public/index.htmltoegevoegd aan het server.js-bestand
Maar geen geluk.

Dit draait allemaal in localhost.
Wat doe ik hier verkeerd?


Antwoord 1, autoriteit 100%

Zoals vermeld in opmerkingen: je hebt een manier nodig om je statische bestanden naar de klant te sturen. Dit kan worden bereikt met een reverse proxy zoals Nginx, of gewoon met express.static().

Plaats al uw “statische” (css, js, afbeeldingen) bestanden in een daarvoor bestemde map, anders dan waar u uw “views” (html-bestanden in uw geval) plaatst. Ik noem het voor het voorbeeld static. Als het klaar is, voeg je deze regel toe aan je servercode:

app.use("/static", express.static('./static/'));

Dit zal effectief elk bestand in uw “statische” map bedienen via de /statische route.

Het opvragen van uw index.js-bestand in de client wordt dus:

<script src="static/index.js"></script>

Other episodes