前端analysis | 3w & 1h

《node》- node api精读总结

2020-08-19

NODE_DEBUG

可以用来输出debug日志信息

node中内置的参数

命令行,也会输出明显的错误

  • timer
  • http
  • net
  • fs
  • cluster
  • tls
  • stream
  • child_process
  • module
1
2
3
4
5
6
7
8
9
10
11
12
$ cat script.js
function bad() {
require('fs').readFile('/');
}
bad();

$ env NODE_DEBUG=fs node script.js
fs.js:88
throw backtrace;
^
Error: EISDIR: illegal operation on a directory, read
<stack trace.>

util自定义输出debug信息

1
2
3
4
5
6
7
# app.js
const util = require("util");
const debuglog = util.debuglog("app");

debuglog("hello from my debugger [%d]", 123);

$ NODE_DEBUG=app node app.js

util自定义正则匹配输出debug信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const util = require('util');
const logGeneral = util.debuglog('app-general');
const logTimer = util.debuglog('app-timer');
const delay = 500;

logGeneral('Kicking off the app');

setTimeout(() => {
logTimer('timer fired after %d', delay);
}, delay);

$ NODE_DEBUG=app-* node index.js
APP-GENERAL 86188: Kicking off the app
APP-TIMER 86188: timer fired after 500

fs.open

接收的参数分为三种形式:

  • 字符串
    • 绝对路径形式
    • 相对路径形式
  • Buffer
  • URL

绝对路径

1
2
3
4
5
6
fs.open('/open/some/file.txt', 'r', (err, fd) => {
if (err) throw err;
fs.close(fd, (err) => {
if (err) throw err;
});
});

相对路径,相对于process.cwd()

1
2
3
4
5
6
fs.open('file.txt', 'r', (err, fd) => {
if (err) throw err;
fs.close(fd, (err) => {
if (err) throw err;
});
});
  • 同步读取文件,需要添加try-catch捕获异常

Buffer,相对或者绝对路径均可

1
2
3
4
5
6
fs.open(Buffer.from('/open/some/file.txt'), 'r', (err, fd) => {
if (err) throw err;
fs.close(fd, (err) => {
if (err) throw err;
});
});

推荐

node debug

自定义node debug

Tags: node
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏