0
我在開發使Web服務調用的節點時遇到問題。當使用http請求調用webservice時,節點紅色崩潰
我使用:
- 節點RED版本:v0.17.5
- Node.js的版本:V8.4.0
它拋出該異常
node-red_1 | 30 Aug 21:21:50 - [red] Uncaught Exception:
node-red_1 | 30 Aug 21:21:50 - TypeError: Cannot set property listening of #<Server> which has only a getter
node-red_1 | at _clone (/usr/src/node-red/node_modules/clone/clone.js:156:16)
node-red_1 | at _clone (/usr/src/node-red/node_modules/clone/clone.js:156:18)
node-red_1 | at _clone (/usr/src/node-red/node_modules/clone/clone.js:156:18)
node-red_1 | at _clone (/usr/src/node-red/node_modules/clone/clone.js:156:18)
node-red_1 | at _clone (/usr/src/node-red/node_modules/clone/clone.js:156:18)
node-red_1 | at clone (/usr/src/node-red/node_modules/clone/clone.js:196:10)
node-red_1 | at Object.cloneMessage (/usr/src/node-red/node_modules/node-red/red/runtime/util.js:53:13)
node-red_1 | at /usr/src/node-red/node_modules/node-red/red/runtime/nodes/flows/Flow.js:262:48
node-red_1 | at Array.forEach (<anonymous>)
node-red_1 | at Flow.handleError (/usr/src/node-red/node_modules/node-red/red/runtime/nodes/flows/Flow.js:256:34)
我hav e我需要發佈到web服務的數據列表。 一切工作正常,直到我解僱我的HTTP帖子。 基本上,我有這樣的代碼片段
const objects = msg.payload || []
const hpptCalls = objects.map(obj => (callback) => {
processObject(obj, callback)
})
async.parallelLimit(hpptCalls, 5, (err, results) => {
node.send(msg)
})
裏面我processObject功能,我幾乎存在於核心節點相同的代碼21 httprequest.js
const req = http.request(options, res => {
let data = ''
res.on('data', chunk => {
data += chunk
})
res.on('end',() => {
callback(null)
})
})
req.setTimeout(120000,() => {
node.error('Error', msg)
req.abort()
callback('Error')
})
req.on('error', err => {
node.error(err, msg)
callback(err)
})
if (content) {
req.write(JSON.stringify(content))
}
req.end()
但是,似乎當第一個HTTP帖子被調用時,我的節點紅色崩潰完全與該異常。我可以弄清楚什麼是問題。我提出了很多想法,認爲我的代碼打破了一些東西,但它是一個簡單明瞭的代碼。
第一視圖,代碼的一部分嘗試克隆一個只讀屬性的服務器類...也許你添加一些循環數據? – Fefux
基本問題與您昨天添加評論的問題相同 - https://github.com/node-red/node-red/issues/1367 - 您的郵件上有一個不可克隆的屬性。從您的代碼中很難看出可能的屬性。 – knolleary