繁体   English   中英

console.log和错误不打印

[英]console.log and error is not printing

我有一个加密文件的脚本,但是我想打印一个console.log();。 加密之后。 我尝试了以下操作,但没有成功:

var figlet = require('figlet');
var encryptor = require('file-encryptor');
var crypto = require('crypto');
var CryptoJS = require("crypto-js");
var node_cryptojs = require('node-cryptojs-aes');

figlet('ZaCrypt', function(err, data) {
    if (err) {
        console.log('Something went wrong...');
        console.dir(err);
        return;
    }
    console.log(data)
});

var message = "Zaseth is my bff";
var key = encrypted_json_str;
var options = {
    algorithm: 'blowfish'
};

// Encrypt message
var r_pass = crypto.randomBytes(128);
var r_pass_base64 = r_pass.toString("base64");
var CryptoJS = node_cryptojs.CryptoJS;
var JsonFormatter = node_cryptojs.JsonFormatter;

var encrypted = CryptoJS.AES.encrypt(message, r_pass_base64,
{
    format: JsonFormatter
});
var encrypted_json_str = encrypted.toString();
// Encyption complete

// Encrypt file.
encryptor.encryptFile('file.txt', 'encrypted.zaseth', message, key, options, function (err){
    if (err) {
        console.log("There was an error...");
        throw err;
        return;
    } else {
        console.log("File encrypted!");
    }
    // Encryption complete.
});

为什么这不起作用? 我要在其中打印内容的加密部分位于底部。

我只是尝试了以下方法,但是没有用:

// Encrypt file.
encryptor.encryptFile('file.txt', 'encrypted.zaseth', message, key, options, function (err) {
    if(err) {
        return console.log(err);
    }
        console.log("File encrypted!");
    // Encryption complete.
});

您指定了太多参数。 因此,您的回调位于错误的位置。

Encryptor. encryptFile() Encryptor. encryptFile()定义了对4-5个参数的处理:

Encryptor.encryptFile = function(inputPath, outputPath, key, options, callback) {

  if(typeof options === 'function') {
    callback = options;
    options = {};
  }

  // and so on...

您的代码有6个:

encryptor.encryptFile('file.txt', 'encrypted.zaseth', message, key, options, function(err){
                                                      // ^-- what is this?

message参数使一切向下移动。 encryptFile()认为您的消息是密钥,您的密钥是选项,您的选项是回调....,并且完全忽略了回调。 由于意外的无效参数类型,它还可能导致在错误处理之前引发错误。

问题1:

你有表达

var key = encrypted_json_str

之前

encrypted_json_str = encrypted.toString()

这意味着为key分配了undefined (因为那时encrypted_json_str encryptFile()仍未undefined ),这将导致encryptFile()方法抛出错误

问题2:

正如@canon所解释的那样,在调用encryptFile() ,您有一个额外的参数message 这导致它使用message参数作为其key参数,将key作为options并将options作为callback 由于您的options实际上不是函数,因此当encryptFile()尝试调用它(认为它是callback )时,它会引发错误,指出callback is not a function

解:

在你调用encryptFile()方法,删除message参数和替换key与参数encrypted_json_str

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM