diff --git a/packages/node_modules/@node-red/nodes/core/function/10-function.js b/packages/node_modules/@node-red/nodes/core/function/10-function.js index 28e560005..d58b057c7 100644 --- a/packages/node_modules/@node-red/nodes/core/function/10-function.js +++ b/packages/node_modules/@node-red/nodes/core/function/10-function.js @@ -306,34 +306,35 @@ module.exports = function(RED) { sandbox[vname] = null; var spec = module.module; if (spec && (spec !== "")) { - RED.import(module.module).then(lib => { + moduleLoadPromises.push(RED.import(module.module).then(lib => { sandbox[vname] = lib; }).catch(err => { node.error(RED._("function.error.moduleLoadError",{module:module.spec, error:err.toString()})) - moduleErrors = true; throw err; - }); + })); } } }); + if (moduleErrors) { + throw new Error(RED._("function.error.externalModuleLoadError")); + } } + const RESOLVING = 0; + const RESOLVED = 1; + const ERROR = 2; + var state = RESOLVING; + var messages = []; + var processMessage = (() => {}); + + node.on("input", function(msg,send,done) { + if(state === RESOLVING) { + messages.push({msg:msg, send:send, done:done}); + } + else if(state === RESOLVED) { + processMessage(msg, send, done); + } + }); Promise.all(moduleLoadPromises).then(() => { - const RESOLVING = 0; - const RESOLVED = 1; - const ERROR = 2; - var state = RESOLVING; - var messages = []; - var processMessage = (() => {}); - - node.on("input", function(msg,send,done) { - if(state === RESOLVING) { - messages.push({msg:msg, send:send, done:done}); - } - else if(state === RESOLVED) { - processMessage(msg, send, done); - } - }); - var context = vm.createContext(sandbox); try { var iniScript = null;