Existe-t-il un outil prêt à l'emploi Node.js (installé avec npm
), qui m'aiderait à exposer le contenu du dossier en tant que serveur de fichiers sur HTTP.
Exemple, si j'ai
D:\Folder\file.zip
D:\Folder\file2.html
D:\Folder\folder\file-in-folder.jpg
Puis en commençant, D:\Folder\
node node-file-server.js
je pouvais accéder au fichier via
http://hostname/file.zip
http://hostname/file2.html
http://hostname/folder/file-in-folder.jpg
Pourquoi le serveur de fichiers statique de mon nœud abandonne-t-il les demandes? référence à certains mystique
serveur de fichiers statique node.js standard
S'il n'y a pas un tel outil, quel cadre dois-je utiliser?
node.js
http
fileserver
Paul Verest
la source
la source
Réponses:
Un bon "outil prêt à l'emploi" pourrait être le serveur http:
Pour l'utiliser:
Ou, comme ceci:
Découvrez-le: https://github.com/nodeapps/http-server
la source
http-server -a localhost
got er dun.http-server -a localhost -p 80
--cors
à envoyerAccess-Control-Allow-Origin:*
avec les en-têtes de réponse (c'est-à-dire lors de la diffusion d'un fichier json)npx http-server
- npx le transforme en une seule ligne qui télécharge les fichiers nécessaires et l'exécute.Si vous ne souhaitez pas utiliser l'outil prêt, vous pouvez utiliser le code ci-dessous, comme démontré par moi à https://developer.mozilla.org/en-US/docs/Node_server_without_framework :
MISE À JOUR Si vous devez accéder à votre serveur à partir d'une demande / d'un fichier externe, vous devez surmonter le CORS, dans votre fichier node.js en écrivant ce qui suit, comme je l'ai mentionné dans une réponse précédente ici
MISE À JOUR
Comme Adrian l'a mentionné, dans les commentaires, il a écrit un code ES6 avec une explication complète ici , je viens de son code ci-dessous, au cas où le code serait parti du site d'origine pour une raison quelconque:
la source
response.writeHead(200
devrait l'êtreresponse.writeHead(404
;)../../etc/password
choses. gist.github.com/amejiarosario/53afae82e18db30dadc9bc39035778e5pathname = pathname.replace(/^(\.)+/, '.');
Pour les personnes souhaitant un serveur exécutable à partir du script NodeJS:
Vous pouvez utiliser expressjs / serve-static qui remplace
connect.static
(qui n'est plus disponible à partir de connect 3):myapp.js:
puis à partir de la ligne de commande:
$ npm install finalhandler serve-static
$ node myapp.js
la source
npm install filehandler
le gestionnaire de fichiers à l'aide de et le package est répertorié dans lenode_modules
répertoire. Mais quand jemyapp.js
lance le noeud jette une erreur, en disantError: cannot find module filehandler
. Si je commente le ststment requis pour charger le gestionnaire de fichiers, l'application se charge très bien, il semble qu'il y ait quelque chose de mal avec le package de gestionnaire de fichiers. Aujourd'hui est le 12 décembre 2014, alors peut-être que le package a changé depuis que cette réponse a été publiée?final
pas le gestionnairefile
Je sais que ce n'est pas Node, mais j'ai utilisé SimpleHTTPServer de Python:
Cela fonctionne bien et est livré avec Python.
la source
python -m http.server [port]
(celui mentionné est pour Python2)php -S localhost:8000
se connecter pourrait être ce que vous recherchez.
Installé facilement avec:
Le serveur de fichiers statique le plus basique pourrait alors s'écrire:
la source
connect.static
; voir ma réponse ci-dessous pour un remplacementrequire
module capable distinct "serve-static".Installez express en utilisant npm: https://expressjs.com/en/starter/installing.html
Créez un fichier nommé server.js au même niveau que votre index.html avec ce contenu:
Si vous souhaitez le placer dans un emplacement différent, définissez le chemin sur la troisième ligne:
CD dans le dossier contenant votre fichier et exécutez le nœud à partir de la console avec cette commande:
Naviguer vers localhost: 8080
la source
Cannot GET /
. J'utilise AWS EC2 pour exécuter le serveur.path.join(__dirname, 'public')
est plus multiplateforme.Des épreuves One-line ™ au lieu de promesses
Le premier est
http-server
,hs
- lienLe second est
serve
par ZEIT.co - lienVoici les options disponibles, si c'est ce qui vous aide à décider.
Si vous devez surveiller les changements, voyez
hostr
, créditez la réponse de Henry Tsengla source
SERVEUR DEMO / PROTO UNIQUEMENT
Si c'est tout ce dont vous avez besoin, essayez ceci:
remarque: vous devez utiliser "/index.html" dans votre adresse, c'est-à-dire " http: // localhost: 3000 / index.html "
la source
index.html
dans votre adresse, ajoutezif (req.url === '/') req.url = '/index.html';
juste aprèsres.writeHead(200);
.const stream = fs.createReadStream(...); stream.pipe(res);
est tout ce dont vous avez besoinIl y a un autre serveur web statique qui est plutôt sympa: la synchronisation du navigateur.
Il peut être téléchargé à l'aide du gestionnaire de packages de nœuds:
Après l'installation, accédez au dossier du projet dans l'invite cmd et exécutez simplement ce qui suit:
Il commencera à traiter tous les fichiers du dossier actuel dans le navigateur.
Vous pouvez en savoir plus sur BrowserSync
Merci.
la source
--files
indicateur changent (nb. Vous n'avez pas besoin de spécifier./*
- seulement ceux que vous souhaitez que Browsersync surveille activement les mises à jour, par exemple .css/*.css
)Je n'ai pas eu beaucoup de chance avec l'une des réponses sur cette page, cependant, ci-dessous semble faire l'affaire.
Ajoutez un
server.js
fichier avec le contenu suivant:Assurez-vous également que vous en avez besoin
express
. Exécutezyarn add express --save
ou ennpm install express --save
fonction de votre configuration (je peux recommander queyarn
ce soit assez rapide).Vous pouvez modifier le
dist
dossier dans lequel vous diffusez votre contenu. Pour mon projet simple, je ne servais à partir d'aucun dossier, j'ai donc simplement supprimé ledist
nom de fichier.Ensuite, vous pouvez courir
node server.js
. Comme je devais télécharger mon projet sur un serveur Heroku, j'ai dû ajouter ce qui suit à monpackage.json
fichier:la source
Si vous utilisez le framework Express , cette fonctionnalité est prête à l'emploi.
Pour configurer une application de service de fichiers simple, procédez comme suit:
la source
Voici mon projet pour animaux de compagnie de serveur Web de fichier statique node.js à un fichier / léger sans dépendance qui, je crois, est un outil rapide et riche dont son utilisation est aussi simple que d'émettre cette commande sur votre terminal Linux / Unix / macOS ( ou termux sur Android) lorsque node.js (ou
nodejs-legacy
sur Debian / Ubuntu) est installé:(différentes commandes existent pour les utilisateurs de Windows dans la documentation)
Il prend en charge différentes choses qui, selon moi, peuvent être utiles,
curl pad.js.org | node - -h
[sudo] npm install -g pad.js
, puis utilisez sa version installée pour avoir accès à ses options:pad -h
[sudo] docker run --restart=always -v /files:/files --name pad.js -d -p 9090:9090 quay.io/ebraminio/pad.js
Les fonctionnalités décrites ci-dessus sont principalement documentées sur la page principale de l'outil http://pad.js.org qui, par une belle astuce que j'ai utilisée, est également l'endroit d'où la source de l'outil elle-même est également servie!
La source de l'outil est sur GitHub qui accueille vos commentaires, demandes de fonctionnalités et ⭐s!
la source
À partir de [email protected], a
npm
commencé l'installation d'un nouveau binaire à côté du npm habituel appelénpx
. Alors maintenant, un liners pour créer un serveur http statique à partir du répertoire actuel:ou
la source
Pour une augmentation saine des performances en utilisant le nœud pour servir les ressources statiques, je recommande d'utiliser Buffet . Il fonctionne de manière similaire à un accélérateur d'applications Web, également appelé proxy inverse HTTP de mise en cache, mais il charge simplement le répertoire choisi en mémoire.
Nous l'utilisons sur le site codePile et avons constaté une augmentation de ~ 700 requêtes / sec à> 4k requêtes / sec sur une page qui télécharge 25 ressources sous une charge de connexion utilisateur simultanée de 1k.
Exemple:
la source
Jetez un oeil sur ce lien .
Il vous suffit d'installer le module express de
node js
.Vous pouvez accéder à votre fichier comme http: //hostname/Folder/file.zip
la source
Ci-dessous a fonctionné pour moi:
Créez un fichier
app.js
avec le contenu ci-dessous:Créez un fichier
index.html
avec le contenu ci-dessous:Démarrez une ligne de commande:
Exécutez ci-dessous dans
cmd
:Aller sous l'URL, en chrome:
C'est tout. J'espère que cela pourra aider.
Source: https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
la source
Vous pouvez essayer de me servir
Son utilisation est si simple:
C'est tout.
PD: Le dossier servi par défaut est "public".
la source
Voici un autre serveur Web simple.
https://www.npmjs.com/package/hostr
Installer
Changer de directeur de travail
Et commence
la source
Dans plain node.js:
Il s'agit d'un simple serveur node.js qui ne sert que les fichiers demandés dans un certain répertoire.
Usage:
folder
peut être absolu ou relatif selon l'server.js
emplacement. La valeur par défaut.
est le répertoire dans lequel vous exécutez lanode server.js
commande.port
est 8080 par défaut mais vous pouvez spécifier n'importe quel port disponible dans votre système d'exploitation.Dans votre cas, je ferais:
Vous pouvez parcourir les fichiers sous
D:\Folder
depuis un navigateur en tapanthttp://127.0.0.1:8080/somefolder/somefile.html
la source
Ce n'est pas encore sur NPM, mais j'ai construit un serveur statique simple sur Express qui vous permet également d'accepter les soumissions de formulaires et de les envoyer par e-mail via un service de messagerie transactionnel (Sendgrid pour l'instant, Mandrill à venir).
https://github.com/jdr0dn3y/nodejs-StatServe
la source
Pour le bénéfice des chercheurs, j'ai aimé la réponse de Jakub g, mais je voulais un peu de gestion des erreurs. Évidemment, il est préférable de gérer correctement les erreurs , mais cela devrait aider à empêcher un site de s'arrêter si une erreur se produit. Code ci-dessous:
la source
Installez d'abord le serveur statique de nœuds via
npm install node-static -g
-g pour l'installer globalement sur votre système, puis accédez au répertoire où se trouvent vos fichiers, démarrez le serveur avecstatic
lui écoute sur le port 8080, naviguez vers le navigateur et tapez localhost: 8080 / yourhtmlfilename .la source
Vous pouvez utiliser le package NPM serve pour cela, si vous n'avez pas besoin du truc NodeJS, c'est un outil rapide et facile à utiliser:
1 - Installez le package sur votre PC:
2 - Servir votre dossier statique avec
serve <path>
:Il vous montrera quel port votre dossier statique est servi, accédez simplement à l'hôte comme:
la source
npm
c'est le gestionnaire de paquets de nœuds, donc vous utilisez en fait le trucEn cherchant dans le registre NPM https://npmjs.org/search?q=server , j'ai trouvé un serveur statique https://github.com/maelstrom/static-server
Cela pourrait même répertorier le contenu des dossiers.
Malheureusement, il n'a pas pu servir les fichiers :)
la source
Un simple serveur statique utilisant connect
Voir aussi Utilisation de node.js comme simple serveur Web
la source
Pour le travail de développement, vous pouvez utiliser (express 4) https://github.com/appsmatics/simple-httpserver.git
la source
la source
Si vous êtes intéressé par un serveur http ultra-léger sans aucune condition préalable, vous devriez jeter un œil à: mangouste
la source
J'utilise Houston au travail et pour des projets personnels, cela fonctionne bien pour moi.
https://github.com/alejandro/Houston
la source
Vous avez également demandé pourquoi les demandes diminuent - vous ne savez pas quelle est la raison spécifique de votre cas, mais dans l'ensemble, vous améliorez le contenu statique du serveur en utilisant un middleware dédié (nginx, S3, CDN) car Node n'est vraiment pas optimisé pour ce modèle de réseau. Voir plus d'explications ici (puce 13): http://goldbergyoni.com/checklist-best-practice-of-node-js-in-production/
la source