簡體   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