6
votes

Comment écrire un fichier dans un répertoire spécifique dans NodeJS?

J'écris du texte dans un fichier utilisant le module fs.

Error:
Error: ENOENT: no such file or directory, open '/niktoResults/[object Object].txt'

Maintenant, cela fonctionne très bien. Je veux écrire ce fichier dans un dossier niktoResults dans mon projet mais quand je le fais

fs.writeFile('/niktoResults/result.txt', 'This is my text', function (err) {
                            if (err) throw err;
                            console.log('Results Received');
                            }); 

Cela entraîne une erreur. Je ne sais pas comment définir le chemin du répertoire qui m'aidera à surmonter cela.

fs.writeFile('result.txt', 'This is my text', function (err) {
                        if (err) throw err;
                        console.log('Results Received');
                        }); 


4 commentaires

Le code que vous avez affiché ne produit pas cette erreur.


Cela fait. Il n'écrira pas dans un répertoire et non dans un dossier.


P.S: La variable de résultat a la valeur [objet objet] C'est pourquoi le nom de fichier est différent.


Votre code dans votre question n'affiche aucune variable de résultats . Il semble que votre code réel soit différent de ce que vous montrez dans la question car le code de votre question ne créerait pas l'erreur que vous voyez. Veuillez nous montrer le code RÉEL qui provoque cette erreur. Ce n'est qu'alors que les gens pourront vous aider.


3 Réponses :


8
votes

Vous devez comprendre que vous pouvez donner un chemin absolu ou un chemin relatif. Actuellement, vous pouvez

fs.writeFile('./niktoResults/result.txt', 'This is my text', function (err) {
  if (err) throw err;               console.log('Results Received');
}); 

Ici. fait référence au répertoire courant. Par conséquent ./niktoResults fait référence au dossier niktoResults dans le répertoire courant.


3 commentaires

Quelle est la manière la plus recommandée de procéder?


Mettez simplement le. avant / niktoResult et cela fonctionnera!


Il est toujours recommandé d'utiliser des chemins relatifs au lieu de chemins absolus!



4
votes

Faites ceci

const fs = require('fs');
const path = require('path');

let baseDir = path.join(__dirname, '/./niktoResults/');
fs.open(`${baseDir}+result.txt`, 'wx', (err, desc) => {
  if(!err && desc) {
     fs.writeFile(desc, 'sample data', (err) => {
       // Rest of your code
       if (err) throw err;               
       console.log('Results Received');
     })
  }
})


2 commentaires

y a-t-il un moyen plus propre de le faire?


Vous pouvez utiliser fs.writeFileSync



1
votes

Ce code écrit "Ceci est un exemple de texte" dans result.txt dans le dossier niktoResults:

const fs = require('fs');
const path = require('path');

fs.writeFileSync(path.join(__dirname,"niktoResults","result.txt"), "This is an example text","UTF8")


0 commentaires