2017-08-07 9 views
0

我在node.js/node-RED中採取了第一步,並且需要從節點組件中執行http請求(GET,POST有和無xml有效內容),所以我認爲xmlhttprequest是我的最好的選擇。我有npm-安裝它。在〜/實際安裝它.node紅/ node_modules和/ usr/local/lib目錄/ node_modules但每次我啓動節點-RED它不與下面的錯誤激活我的節點部件:在安裝/使用xmlhttprequest時遇到問題

Welcome to Node-RED 
=================== 

7 Aug 09:05:20 - [info] Node-RED version: v0.17.5 
7 Aug 09:05:20 - [info] Node.js version: v6.11.2 
7 Aug 09:05:20 - [info] Darwin 16.7.0 x64 LE 
7 Aug 09:05:20 - [info] Loading palette nodes 
7 Aug 09:05:21 - [warn] ------------------------------------------------------ 
7 Aug 09:05:21 - [warn] [rpi-gpio] Info : Ignoring Raspberry Pi specific node 
7 Aug 09:05:21 - [warn] [synaptiq-solar] Error: Cannot find module 'xmlhttprequest' 
7 Aug 09:05:21 - [warn] ------------------------------------------------------ 
7 Aug 09:05:21 - [info] Settings file : /Users/rudi/.node-red/settings.js 
7 Aug 09:05:21 - [info] User directory : /Users/rudi/.node-red 
7 Aug 09:05:21 - [info] Flows file  : /Users/rudi/.node-red/flows_Rudi.local.json 
7 Aug 09:05:21 - [info] Server now running at http://127.0.0.1:1880/ 
7 Aug 09:05:21 - [info] Waiting for missing types to be registered: 
7 Aug 09:05:21 - [info] - synaptiq-solar 

名稱我的組件是synaptiq太陽能及其代碼開始與要求對XMLHttpRequest的成分是這樣的:

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest; 

而且,我的package.json具有相關部分提到的XMLHttpRequest,你可以看到如下:

{ 
    "name": "synaptiq-solar", 
    "version": "0.0.1", 
    "description": "Just playing around, learning how to create a custom node", 
    "dependencies": { 
    "xmlhttprequest": "1.8.0" 
    }, 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "node-red": { 
    "nodes": { 
     "synaptiq-solar": "synaptiq-solar.js" 
    } 
    }, 
    "author": "Smappee n.v.", 
    "license": "ISC" 
} 

那麼我做錯了什麼?我應該在其他位置安裝xmlhttprequest組件嗎?有沒有另一個lib目錄,node-RED正在尋找依賴組件?

+0

我可能是對整個節點RED情況有點失落......但'XMLHttpRequest'是JavaScript的生活水平的一部分。爲什麼你需要安裝它..? – Crowes

回答

2

如果自定義節點具有外部依賴關係,則應將其聲明在其package.json文件中,以便它們與自定義模塊一起安裝。

如果你已經創建了這個「本地」節點(與在nodes目錄只是一個.js.html文件,並沒有package.json),你應該將到創建它作爲一個模塊。

文檔包括在適當的打包節點指南:https://nodered.org/docs/creating-nodes/packaging

+0

我沒有讀過該部分,這就是爲什麼我在package.json中添加了一個依賴項部分。我意識到我應該在原來的問題中添加這個內容,所以我編輯了它,並且運行了npm更新。後者似乎捆綁xmlhttprequest在我的節點,但這不是我想要的,一旦我釋放組件是嗎? –

+0

我再次執行了所有的指令(例如,在本地目錄中的sudo npm鏈接和我的〜/ .node-red目錄中的npm鏈接synaptiq-solar,現在它似乎可以工作,因此感謝您將它引回我的注意。 –

+0

感謝您將它添加到你的package.json中不會將你的節點內的依賴包捆綁在一起 - 但是它告訴npm當它安裝你的節點時需要將它作爲一個依賴項安裝,如果我的答案幫助解決了你的問題,請記住把它標記爲Accepted – knolleary