J'ai une configuration webpack comme:
var path = require('path')
module.exports = {
entry: "./index.js",
output: {
path: path.join(__dirname, 'static'),
filename:'bundle.js'
},
module: {
loaders: [
{ test: /\.js$/, exclude: /node_modules/, loader: "babel-loader"},
{ test: /\.json$/, loader: 'json-loader' },
]
},
node: {
fs: "empty"
}
};
Et je veux lire un fichier en utilisant fs
Je fais quelque chose comme:
var fs = require('fs')
console.log(fs)
fs.readFile('input.txt', function (err, buffer) {
console.log("buffer")
console.log(buffer)
})
Je veux juste lire un fichier ici mais quand je le fais, cela me donne une erreur en disant:
fs.readFile
N'est pas une fonction
J'ai installé fs
en utilisant npm install --save fs
De plus, lorsque j'imprime fs
, cela me donne un objet vide. Ci-dessus j'ai fait console.log(fs)
ça me donne un objet vide
Qu'est-ce qui ne va pas ici?
Votre code a l'air bien! Il n'y a donc rien de mal avec le code. Pour vérifier, essayez d'exécuter le même code ici https://www.tutorialspoint.com/execute_nodejs_online.php et vous pouvez voir que console.log(fs);
ne sera pas vide.
Ainsi, la raison pour laquelle votre code affiche une erreur est que vous avez installé le module de noeud nommé 'fs' en utilisant la commande npm install --save fs
Que vous ne devriez pas! Node propose ce module par défaut. Tout ce que vous avez à faire est de simplement utiliser const fs = require('fs');
(en utilisant var
ou let
est également trouvé mais je recommanderai const
ici).
Il vous suffit donc de supprimer le dossier node_modules
Local, puis d'exécuter à nouveau ce code en installant les autres modules que vous souhaitez et il fonctionnera correctement!
J'espère que cela t'aides :)
Comme je crois que les commentaires mentionnés,
node: { fs: "empty" }
Doit être retiré. De plus, tout votre code doit s'exécuter sur le serveur. Vous ne pouvez pas lire des fichiers comme celui-ci dans le navigateur. Node Les API sont côté serveur uniquement, vous devez donc créer une API à l'aide d'express ou d'une bibliothèque similaire, par exemple.
router.get('/file/read', (req, res, next) => { fs.readFile('input.txt', function (err, buffer) {
console.log("buffer")
res.send(buffer);
})
})
Ensuite, dans votre navigateur, vous devez utiliser AJAX pour appeler l'API et récupérer le contenu du fichier.
La lecture de fichiers arbitraires a PROBLÈMES DE SÉCURITÉ ÉVITABLES. Vous ne devez pas autoriser l'API à lire les fichiers que l'utilisateur aime. Vous devez être très prudent ici pour restituer les entrées et limiter l'ensemble des fichiers disponibles.