0

我正在尝试做一些看似简单的事情:

var token = crypto.randomBytes(32);
var wstream = fs.createWriteStream('output.hex');
wstream.write(token);
wstream.end();

运行此代码后,该output.hex文件为空。token在代码期间也永远不会修改。

同样,我试试这个:

// encrypts a message
var token = crypto.randomBytes(32);
var cipher = crypto.createCipher('aes-256-cbc', token);
var enc_msg = cipher.update(msg, 'binary', 'binary');
enc_msg += cipher.final('binary');

// print it
console.log(enc_msg);  // prints Øôâ¨7"ªðqâ~è (binary data - good)

// check the type
console.log(type of enc_msg); // prints 'string'

// write it to a file (fails)
var wstream = fs.createWriteStream('output.hex');
wstream.write(enc_msg);
wstream.end();

我在这里想念什么?该文件始终是完全空的。

4

1 回答 1

0

我弄清楚了问题所在。

wstream.write()函数是异步的(这对我来说并不明显,因为我没有提供回调)。因此,当我的脚本试图写入文件时,它到达了我的process.exit(0)命令(不在原始问题中)并在实际写入之前终止了脚本。

删除强制退出并让脚本在它准备好时终止就像一个魅力。

于 2015-03-12T16:34:00.603 回答