[英]Cannot convert object to primitive value
我將數據發布到節點服務器:
{
"form_1": [{
"resultName": "",
"level": "",
"unitOrder": "",
"winner": "",
"winnerOrder": "",
"date": "1",
"score": ""
}],
"form_2": [{
"resultName": "",
"level": "",
"unitOrder": "",
"winner": "",
"winnerOrder": "",
"date": "1",
"score": ""
}],
"form_3": [{
"resultName": "",
"level": "",
"unitOrder": "",
"winner": "",
"winnerOrder": "",
"date": "1",
"score": ""
}]
}
我嘗試在快速服務器中 console.log 數據:
console.log(req.body)
但出現錯誤:
類型錯誤:無法將對象轉換為原始值
我不明白。 那么我怎樣才能得到數據呢?
console.log用於記錄字符串或簡單值
正如文檔所說,您可以將輸出格式化為 json,例如console.log("body: %j", req.body)
或者,更好的是,使用console.dir按原樣記錄對象
要檢查的要點。
角碼
headers.append('Content-Type', 'application/json');
this.http.post(url, JSON.stringify(body), { headers: headers }).map((data: Response) => data.json()).catch(this.handleError);
在 nodeJs 中的 server.js 中啟用了Cors - 快速代碼
var cors = require('cors'); app.use(cors());
4.現在api.js(或somefile.js )中的 req.body 應該有從 angular 形式傳遞的 json 數據
以上是其中一個為我工作的結合。 有些人通過從 angular 發送 json 並嘗試在 nodejs 中再次解析 json 對象而面臨錯誤,這會導致錯誤。
很少有飛行前錯誤。 實際上,瀏覽器可能首先發送帶有方法 OPTIONS 的預檢請求,以獲取允許的來源、標頭和方法。 因此啟用 cors 有助於避免此錯誤。
導致此錯誤消息的原因通常是系統嘗試將某個對象轉換為字符串,但無法從它嘗試顯示為字符串的對象中生成字符串。
如果一個值不繼承 Object 但它是一種更原始的值類型,因此它不會從 Object.prototype 繼承 toString() 方法,那么通常就是這種情況。
例如
Object.create(null) + ''
導致此錯誤,因為 + "" 基本上與調用您嘗試 + "" 的值的方法 toString() 的含義相同。 但是由於 Object.create(null) 沒有從 Object.prototype 繼承 toString() 方法,這會導致錯誤。
相似地
(Object.create(null)) .toString()
產生同樣的錯誤。
如果您將自己的方法 toString() 添加到這樣的值,您添加的方法必須返回一個字符串,否則您將再次收到相同的錯誤消息,因為系統隨后調用了您的 toString() 方法,但不會產生字符串。
所以當心試圖在日志等中打印出不是對象的值。 另一種情況是,如果您使用這樣的值調用 alert() 或 confirm() 等。
一般情況下console.log(req.body)
但是當你處理put
你最好ty out console.log('request body: ',req.body);
不要
此錯誤背后的實際原因
當 Javascript 嘗試將對象轉換為字符串時。
Javascript 將嘗試調用該對象的toString()
方法。 大多數 Javascript 對象都有從Object.prototype
繼承的toString()
方法。 但是其中一些具有null prototype
,沒有toString()
方法,因此 Javascript 將無法將這些對象轉換為字符串原語。 並且can't convert object to primitive error will rise
。
在Javascript中創建一個空原型對象使用這個方法
let travel = Object.create(null)
解決方案
travel = {...travel}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.