node脚本传参解决方案
commander.js,例:node app.js -p opt1 -f file1
#!/usr/bin/env node
var program = require('commander');
program
.version('0.0.1')
.option('-p, --peppers', 'Add peppers')
.option('-P, --pineapple', 'Add pineapple')
.option('-b, --bbq', 'Add bbq sauce')
.option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')
.parse(process.argv);
console.log('you ordered a pizza with:');
if (program.peppers) console.log(' - peppers');
if (program.pineapple) console.log(' - pineapple');
if (program.bbq) console.log(' - bbq');
console.log(' - %s cheese', program.cheese);
nodejs path处理
- __dirname:返回的是这个文件所在文件夹的位置
- __filename:你运行命令代表的是文件所在的位置,不管你运行什么命令,都是指向文件
- process.cwd():你运行node命令所在文件夹的位置,比如你在src目录下运行,那么就是输出到src为止,下面的同理。
nodejs createReadStream;buffer的使用
let stream = fs.createReadStream(filePath)
let fileContent;
stream.on('data', (chunk) => {
fileContent += chunk
});
stream.on('end', () => {
console.log(Buffer.from(fileContent).toString())
});
结果:
{
"front_res": [{
"source": "../dataAnalysis1/handledtimeData-5.js",
"target": "/var/www/html/s/sns/miaokai/"
}]
}
nodejs 编码问题
The value "gbk" is invalid for option "encoding"
- 原理:由于Node.js仅支持如下编码:utf8, ucs2, ascii, binary, base64, hex,并不支持中文GBK或GB2312之类的编码
- 解决方案:使用iconv-lite
const fs = require('fs');
const iconv = require('iconv-lite');
const str = '该字符串预计要转化为gbk编码的字符串';
const encoded = iconv.encode(str, 'gbk');
fs.writeFile('gbk.txt', encoded, function () {
const buf = fs.readFileSync('gbk.txt');
console.log(buf.length);
});