wil*_*007 21 node.js typescript
我应该如何从node.js中的typescript读取和写入文本文件?我不确定是否会在node.js中读取/写入一个沙箱文件,如果没有,我相信应该有一种方法来访问文件系统.
bas*_*rat 28
相信应该有一种方法来访问文件系统.
包括node.d.ts使用npm i @types/node(使用tsd tsconfig.json).然后创建一个新npx tsc --init文件(.ts)并创建一个fs文件如下:
import fs from 'fs';
fs.readFileSync('foo.txt','utf8');
Run Code Online (Sandbox Code Playgroud)
您也可以使用其他功能node.d.ts:https://nodejs.org/api/fs.html
节点快速入门:https://basarat.gitbooks.io/typescript/content/docs/node/nodejs.html
小智 12
import { readFileSync } from 'fs';
const file = readFileSync('./filename.txt', 'utf-8');
Run Code Online (Sandbox Code Playgroud)
这对我有用。您可能需要将第二个命令包装在任何函数中,或者您可能需要在没有关键字的类中声明const。
小智 7
首先,您将需要为Typescript 安装节点定义。您可以在此处找到定义文件:
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/node/node.d.ts
获得文件后,只需将引用添加到.ts文件中,如下所示:
/// <reference path="path/to/node.d.ts" />
然后,您可以使用“节点文件系统”模块对可读写的打字稿类进行编码。您的打字稿类myClass.ts如下所示:
/// <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();
Run Code Online (Sandbox Code Playgroud)
将.ts文件转换为javascript后(如果您不知道如何操作,请在此处查看),您可以使用node运行javascript文件,并使魔术工作:
> node myClass.js
Run Code Online (Sandbox Code Playgroud)
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);
})
Run Code Online (Sandbox Code Playgroud)
编辑:
考虑项目结构:
../readfile/
??? filename.txt
??? src
??? index.js
??? index.ts
Run Code Online (Sandbox Code Playgroud)
考虑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));
Run Code Online (Sandbox Code Playgroud)
如果你在 readfile 文件夹中运行tsc src/index.ts && node src/index.js,输出将是:
./
filename.txt
src
/home/andrei/scripts/readfile/src/
index.js
index.ts
Run Code Online (Sandbox Code Playgroud)
也就是说,这取决于您运行节点的位置。
该__dirname是当前模块的目录名。
| 归档时间: |
|
| 查看次数: |
78535 次 |
| 最近记录: |