web-dev-qa-db-fra.com

Serveur Web de base avec node.js et express pour servir des fichiers et des ressources html

Je fais des expériences frontales et j'aimerais avoir un serveur web très basique pour démarrer rapidement un projet et servir les fichiers (un fichier index.html + quelques fichiers css/js/img). Donc j'essaye de faire quelque chose avec node.js et express, j'ai déjà joué avec les deux, mais je ne veux pas utiliser de moteur de rendu cette fois car je n'aurai qu'un seul fichier statique, avec ce code j'obtiens le fichier html mais pas les actifs (erreur 404):

var express = require('express'),
    app = express.createServer();

app.configure(function(){
  app.use(express.static(__dirname + '/static'));
});

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

app.listen(3000);

Existe-t-il un moyen simple de le faire (dans un seul fichier si possible) ou Express nécessite l'utilisation d'un moteur de visualisation et de rendu?

40
djevg

Vous pourriez utiliser ne solution comme celle-ci dans node.js  (le lien ne fonctionne plus) , comme je l'ai déjà écrit sur un blog.

Le résumé, installez la connexion avec npm install connect.

Collez ensuite ce code dans un fichier appelé server.js dans le même dossier que vos fichiers HTML/CSS/JS.

var util = require('util'),
    connect = require('connect'),
    port = 1337;

connect.createServer(connect.static(__dirname)).listen(port);
util.puts('Listening on ' + port + '...');
util.puts('Press Ctrl + C to stop.');

Accédez maintenant à ce dossier dans votre terminal et exécutez node server.js, cela vous donnera un serveur Web temporaire à http://localhost:1337

13
isNaN1247

Je suis tombé sur cela parce que j'ai une situation similaire. Je n'ai pas besoin ou n'aime pas les modèles. Tout ce que vous mettez dans le répertoire public/sous express est servi comme contenu statique (tout comme Apache). J'ai donc placé mon index.html et utilisé sendfile pour gérer les demandes sans fichier (par exemple: GET http: // mysite / ):

app.get('/', function(req,res) {
  res.sendfile('public/index.html');
});
60
ajventi

Le code suivant a fonctionné pour moi.

var express = require('express'),
  app = express(),
  http = require('http'),
  httpServer = http.Server(app);

app.use(express.static(__dirname + '/folder_containing_assets_OR_scripts'));

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

cette page charge avec des actifs

27
vinesh