Lire un fichier en Node.js
Je suis assez perplexe à la lecture de fichiers en Node.js.
fs.open('./start.html', 'r', function(err, fileToRead){
if (!err){
fs.readFile(fileToRead, {encoding: 'utf-8'}, function(err,data){
if (!err){
console.log('received data: ' + data);
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(data);
response.end();
}else{
console.log(err);
}
});
}else{
console.log(err);
}
});
Fichier start.html
est dans le même répertoire que le fichier qui tente de l'ouvrir et de le lire.
Cependant, dans la console j'obtiens:
{ [Erreur: ENOENT, ouvrir". /start.html'] errno: 34, code: 'ENOENT', path: './start.html' }
Des idées?
- Les Chances sont que le fichier n'est pas d'où vous/le code pense qu'il est. Si le fichier est dans le même répertoire que le script, essayez:
path.join(__dirname, 'start.html')
- Pouvez-vous console.log("__dirname: "+ __dirname); à droite avant la sortie err? Qui dira ce répertoire est local pour votre exécutable à ce moment-là. Il y a des choses que vous pouvez faire pour changer votre emplacement et peut-être vous frapper que, peut-être que le code n'est pas d'exploitation à l' __dirname où vous pensez qu'elle est.
- Le fichier doit être dans le même répertoire que vous exécutez le nœud de processus de. Ainsi, si le fichier est dans dir/node/index.html et ainsi est votre app.js fichier, mais vous ne: nœud /dir/node/app.js Ensuite, vous recevez un message d'erreur. dc5 la solution devrait faire l'affaire.
- Vous devez fermer cette question, ou de la fourniture de vos modifier, à titre de réponse et de l'accepter.
- utilisation
path.join(__dirname, '/filename.html')
et prendre de référence à partir de stackoverflow.com/a/56110874/4701635
Vous devez vous connecter pour publier un commentaire.
Utilisation
path.join(__dirname, '/start.html')
;Grâce à dc5.
readFileSync
pour éviter le rappel.path.join
est inutile, utilisez,
au lieu de+
../someFolder/myFile.txt
?Avec Nœud à 0,12$, il est possible de le faire de manière synchrone maintenant:
fs
est le système de fichiers. readFileSync() retourne un Tampon ou une chaîne si vous le demandez.fs
assume correctement les chemins relatifs sont un problème de sécurité.path
est un travail autour de.De charger comme un string, spécifier l'encodage:
*Sync
méthodes lors de la programmation pour le web. Ces ne sont appropriés que pour grunt/gulp tâches, console apps, etc. Ils ont mis en pause l'ensemble du processus lors de la lecture. L'OP du code de référencesresponse
donc c'est clairement une application web oùreadFileSync
n'est pas approprié.readFileSync
--il dans le moyen de traitement d'une requête web. Cette réponse a été totalement inapproprié à la question à portée de main.1).Pour ASync :
2).Pour La Synchronisation :
__dirname
est le répertoire du module en cours de sorte qu'ils ne sont pas les mêmes.simple façon synchrone avec le noeud:
Exécutez ce code, il va récupérer des données à partir d'un fichier et l'afficher dans la console
fileread
fonction il suffit de faire cefs.readFileSync
faire!Pour lire le fichier html à partir du serveur à l'aide de
http
module. C'est une façon de lire le fichier du serveur. Si vous souhaitez obtenir sur console vient de supprimerhttp
module de déclaration.JS:
HTML:
Si vous voulez savoir comment faire pour lire un fichier dans un répertoire, et en faire quelque chose, ici vous allez. Cela vous montre également comment exécuter une commande par le biais de la
power shell
. C'est dansTypeScript
! J'ai eu du mal avec cela, donc j'espère que cela aide quelqu'un un jour. Hésitez pas à en bas de vote-moi si vous pensez que C'est inutile. Ce qui est arrivé pour moi a étéwebpack
tous mes.ts
fichiers dans chacun de mes répertoires dans un certain dossier pour être prêt pour le déploiement. J'espère que vous pourrez mettre à profit!