2017-01-04 59 views
0

嘗試使用Node.js/Javascript將對象轉換爲字符串時出現以下錯誤。使用Node.js將對象轉換爲字符串時出現類型錯誤

TypeError: Converting circular structure to JSON 
    at Object.stringify (native) 
    at exports.userlogin (/opt/lampp/htdocs/FGDP/route/route.js:11:19) 
    at Layer.handle [as handle_request] (/opt/lampp/htdocs/FGDP/node_modules/express/lib/router/layer.js:95:5) 
    at next (/opt/lampp/htdocs/FGDP/node_modules/express/lib/router/route.js:131:13) 
    at Route.dispatch (/opt/lampp/htdocs/FGDP/node_modules/express/lib/router/route.js:112:3) 
    at Layer.handle [as handle_request] (/opt/lampp/htdocs/FGDP/node_modules/express/lib/router/layer.js:95:5) 
    at /opt/lampp/htdocs/FGDP/node_modules/express/lib/router/index.js:277:22 
    at Function.process_params (/opt/lampp/htdocs/FGDP/node_modules/express/lib/router/index.js:330:12) 
    at next (/opt/lampp/htdocs/FGDP/node_modules/express/lib/router/index.js:271:10) 

我在下面解釋我的代碼。

exports.userlogin=function(req,res){ 
    var username=req.body.user_name; 
    var password=req.body.user_pass; 
    var ciphertext = CryptoJS.AES.encrypt(password, 'lexelPass'); 
    var pass=JSON.stringify(ciphertext); 
} 

這裏我得到ciphertext變量的數據類型爲對象,我需要它轉換成字符串。但在這裏我得到這種類型的錯誤。請幫我解決這個問題。

+0

您是否控制並查看「ciphertext」的返回類型? 它是什麼類型? – ricky

+1

我認爲這裏的'ciphertext'是一個'word-array'或'byte-array'而不是一個對象。首先進行必要的轉換。 – nashcheez

+0

@ricky:它給出'object'類型。 – satya

回答

2

CryptoJS.AES.encrypt(password, 'lexelPass')聲明的對象返回的是循環類型。循環型是像

var obj = {}; 
 
obj.obj = obj;

因此,對於解決這件事情,我們可以利用替代品回調函數在JSON.stringify作爲第二個參數。通過將廢棄圓形對象的邏輯放入替代函數中。

check syntax at MDN for replacer

相關問題