Comment dois-je lire et écrire un fichier texte à partir de TypeScript dans node.js? Je ne suis pas sûr de pouvoir lire/écrire un fichier dans Sandbox dans le fichier node.js, sinon, je pense qu'il devrait exister un moyen d'accéder au système de fichiers.
crois qu'il devrait y avoir un moyen d'accéder au système de fichiers.
Comprendre node.d.ts
en utilisant npm i @types/node
. Et créez ensuite un nouveau tsconfig.json
fichier (npx tsc --init
) et créez un .ts
fichier comme suit:
import fs from 'fs';
fs.readFileSync('foo.txt','utf8');
Vous pouvez également utiliser d'autres fonctions dans fs
: https://nodejs.org/api/fs.html
Démarrage rapide du noeud: https://basarat.gitbooks.io/TypeScript/content/docs/node/nodejs.html
Vous devez d’abord installer les définitions de noeud pour TypeScript. Vous pouvez trouver le fichier de définitions ici:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/node/node.d.ts
Une fois que vous avez un fichier, ajoutez simplement la référence à votre .ts
fichier comme ceci:
/// <reference path="path/to/node.d.ts" />
Vous pouvez ensuite coder votre classe TypeScript en lecture/écriture à l’aide du module Node Système de fichiers. Votre classe TypeScript myClass.ts
peut ressembler à ceci:
/// <reference path="path/to/node.d.ts" />
class MyClass {
// Here we import the File System module of node
private fs = require('fs');
constructor() { }
createFile() {
this.fs.writeFile('file.txt', 'I am cool!', function(err) {
if (err) {
return console.error(err);
}
console.log("File created!");
});
}
showFile() {
this.fs.readFile('file.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("Asynchronous read: " + data.toString());
});
}
}
// Usage
// var obj = new MyClass();
// obj.createFile();
// obj.showFile();
Une fois que vous avez copié votre .ts
fichier dans un fichier javascript ( consultez ici si vous ne savez pas comment le faire), vous pouvez exécuter votre fichier javascript avec node et laisser la magie fonctionner:
> node myClass.js
import * as fs from 'fs';
import * as path from 'path';
fs.readFile(path.join(__dirname, "filename.txt"), (err, data) => {
if (err) throw err;
console.log(data);
})
MODIFIER:
considérer la structure du projet:
../readfile/
├── filename.txt
└── src
├── index.js
└── index.ts
prendre en compte index.ts
:
import * as fs from 'fs';
import * as path from 'path';
function lookFilesInDirectory(path_directory) {
fs.stat(path_directory, (err, stat) => {
if (!err) {
if (stat.isDirectory()) {
console.log(path_directory)
fs.readdirSync(path_directory).forEach(file => {
console.log(`\t${file}`);
});
console.log();
}
}
});
}
let path_view = './';
lookFilesInDirectory(path_view);
lookFilesInDirectory(path.join(__dirname, path_view));
si vous avez dans le dossier readfile et lancez tsc src/index.ts && node src/index.js
, le résultat sera:
./
filename.txt
src
/home/andrei/scripts/readfile/src/
index.js
index.ts
c'est-à-dire que cela dépend de l'endroit où vous exécutez le nœud.
__ dirname est le nom de répertoire du module actuel.
import { readFileSync } from 'fs';
const file = readFileSync('./filename.txt', 'utf-8');
Cela a fonctionné pour moi. Vous devrez peut-être insérer la deuxième commande dans une fonction ou déclarer dans une classe sans le mot clé const
.