1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00

Add better install message on missing nodes

This commit is contained in:
Nick O'Leary 2015-06-17 14:18:47 +01:00
parent 841edbe6fb
commit 3002aead6b
4 changed files with 29 additions and 6 deletions

View File

@ -26,7 +26,20 @@ var nodes = {
"redis out": {module:"node-red-node-redis"}, "redis out": {module:"node-red-node-redis"},
"mongodb": {module:"node-red-node-mongodb"}, "mongodb": {module:"node-red-node-mongodb"},
"mongodb out": {module:"node-red-node-mongodb"} "mongodb out": {module:"node-red-node-mongodb"},
"serial in": {module:"node-red-node-serialport"},
"serial out": {module:"node-red-node-serialport"},
"serial-port": {module:"node-red-node-serialport"},
"twitter-credentials": {module:"node-red-node-twitter"},
"twitter in": {module:"node-red-node-twitter"},
"twitter out": {module:"node-red-node-twitter"},
"e-mail": {module:"node-red-node-email"},
"e-mail in": {module:"node-red-node-email"},
"feedparse": {module:"node-red-node-feedparser"}
} }
module.exports = { module.exports = {

View File

@ -24,6 +24,7 @@ var log = require("../log");
var events = require("../events"); var events = require("../events");
var redUtil = require("../util"); var redUtil = require("../util");
var storage = null; var storage = null;
var settings = null;
var deprecated = require("./deprecated"); var deprecated = require("./deprecated");
var activeFlow = null; var activeFlow = null;
@ -40,7 +41,8 @@ events.on('type-registered',function(type) {
}); });
var flowNodes = module.exports = { var flowNodes = module.exports = {
init: function(_storage) { init: function(_settings, _storage) {
settings = _settings;
storage = _storage; storage = _storage;
}, },
@ -148,12 +150,20 @@ var flowNodes = module.exports = {
for (var i=0;i<missingTypes.length;i++) { for (var i=0;i<missingTypes.length;i++) {
var type = missingTypes[i]; var type = missingTypes[i];
var info = deprecated.get(type); var info = deprecated.get(type);
var knownUnknowns = 0;
if (info) { if (info) {
log.info(" - "+missingTypes[i]+" (provided by npm module "+info.module+")") log.info(" - "+missingTypes[i]+" (provided by npm module "+info.module+")");
knownUnknowns += 1;
} else { } else {
log.info(" - "+missingTypes[i]); log.info(" - "+missingTypes[i]);
} }
} }
if (knownUnknowns > 0) {
log.info("To install any of these missing modules, run:");
log.info(" npm install <module name>");
log.info("in the directory:");
log.info(" "+settings.userDir);
}
} }
} }
}, },

View File

@ -54,7 +54,7 @@ function createNode(node,def) {
function init(_settings,storage,app) { function init(_settings,storage,app) {
credentials.init(storage,app); credentials.init(storage,app);
flows.init(storage); flows.init(_settings,storage);
registry.init(_settings); registry.init(_settings);
} }

View File

@ -166,7 +166,7 @@ describe('flows', function() {
var testFlow = [{"type":"testNode","credentials":{"a":1}},{"type":"testNode2"}]; var testFlow = [{"type":"testNode","credentials":{"a":1}},{"type":"testNode2"}];
var resultFlow = clone(testFlow); var resultFlow = clone(testFlow);
var storage = { saveFlows: sinon.spy() }; var storage = { saveFlows: sinon.spy() };
flows.init(storage); flows.init({},storage);
flows.setFlows(testFlow,"full").then(function() { flows.setFlows(testFlow,"full").then(function() {
try { try {
credentialsExtact.calledOnce.should.be.true; credentialsExtact.calledOnce.should.be.true;
@ -194,7 +194,7 @@ describe('flows', function() {
var testFlow = [{"type":"testNode"},{"type":"testNode2"}]; var testFlow = [{"type":"testNode"},{"type":"testNode2"}];
var testFlow2 = [{"type":"testNode3"},{"type":"testNode4"}]; var testFlow2 = [{"type":"testNode3"},{"type":"testNode4"}];
var storage = { saveFlows: sinon.spy() }; var storage = { saveFlows: sinon.spy() };
flows.init(storage); flows.init({},storage);
flows.setFlows(testFlow,"full").then(function() { flows.setFlows(testFlow,"full").then(function() {
flows.setFlows(testFlow2,"nodes").then(function() { flows.setFlows(testFlow2,"nodes").then(function() {