Node.js sert du HTML, mais ne peut pas charger les fichiers de script dans la page servie


Alberto Calabrese

J'essaie de créer une petite page de connexion en utilisant une base de données mongoDB et Node.js + express. Je suis nouveau sur Node.js, donc peut-être que la solution est plus facile que je ne le pensais. Le problème est: lorsque je sers le fichier HTML lors de la connexion à la page du serveur, je ne peux pas utiliser le fichier JavaScript référencé dans le fichier html. Comment puis-je y remédier? Ps les fichiers index.html et client.js sont tous situés dans un dossier nommé "client".

Code:

var express = require('express');
var path = require('path');
var app = express();
app.use(express.static(__dirname + 'client'));
app.get('/', function(req, res) {
    res.sendFile(path.join(__dirname + '/client/index.html'));
});

Fichier HTML:

 <!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Login</title>
    <meta name="description" content="Login Page">
    <meta name="author" content="AlbertoCoder">
    <script src="/client/client.js"></script>
</head>
<body>
</body>
</html>
Lui

Vous pouvez l'utiliser, mais vous devez servir ce fichier javascript à partir de votre serveur via un chemin valide.

Dans votre HTML, vous essayez de récupérer le fichier javascript à partir de /client/client.js

L'indice ici est:

Imaginez l'URL suivante de votre serveur http://myserver:8080/

Maintenant, votre code HTML tente de récupérer le fichier js via http://myserver:8080/client/client.js

Comme vous pouvez le voir, votre serveur ne dessert pas ces actifs, vous ne pourrez donc pas récupérer ce fichier js.

Procédez comme suit:

app.get('/client/client.js', function(req, res) {
    res.sendFile(path.join(__dirname + '/client.js'));
});

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

Articles connexes


Node.js ne sert pas de fichiers autres que index.html

utilisateur5744864 Je suis vraiment perdu. Je cherche depuis une heure maintenant et rien de ce que je trouve ne semble fonctionner. Pas quand je mets les fichiers publics dans un dossier séparé et fais les choses de cette façon. mJehanno Vous devez servir les

JSDOM ne charge pas les fichiers de script dans Node

John J'essaie de faire un test de chargement d'une page html dans jsdom qui finira par générer des graphiques. Je ne peux pas surmonter le premier obstacle qui consiste simplement à charger la page html et à exécuter le javascript. Vous trouverez ci-dessous ma