2017-08-31 140 views
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帖子被調用時,我的節點紅色崩潰完全與該異常。我可以弄清楚什麼是問題。我提出了很多想法,認爲我的代碼打破了一些東西,但它是一個簡單明瞭的代碼。

+1

第一視圖,代碼的一部分嘗試克隆一個只讀屬性的服務器類...也許你添加一些循環數據? – Fefux

+2

基本問題與您昨天添加評論的問題相同 - https://github.com/node-red/node-red/issues/1367 - 您的郵件上有一個不可克隆的屬性。從您的代碼中很難看出可能的屬性。 – knolleary

回答

0

顯然發現問題,正如項目的github中所述。在流程中的一個隨機點上,有人用以下代碼放置功能節點:

return { 
    "_msg": msg 
    [other properties] 
} 

謝謝! (很難找到問題大聲笑,我們有一個很大的流量)。