diff --git a/packages/node_modules/@node-red/runtime/lib/flows/util.js b/packages/node_modules/@node-red/runtime/lib/flows/util.js index 7eefe86c4..0c353aa90 100644 --- a/packages/node_modules/@node-red/runtime/lib/flows/util.js +++ b/packages/node_modules/@node-red/runtime/lib/flows/util.js @@ -112,6 +112,7 @@ async function evaluateEnvProperties(flow, env, credentials) { if (pendingEvaluations.length > 0) { await Promise.all(pendingEvaluations) } + // Now loop over the env types and evaluate them properly for (let i = 0; i < envTypes.length; i++) { let { name, value, type } = envTypes[i] // If an env-var wants to lookup itself, delegate straight to the parent @@ -122,7 +123,17 @@ async function evaluateEnvProperties(flow, env, credentials) { if (evaluatedEnv.hasOwnProperty(value)) { value = evaluatedEnv[value] } else { - value = redUtil.evaluateNodeProperty(value, type, {_flow: flow}, null, null); + value = redUtil.evaluateNodeProperty(value, type, {_flow: { + // Provide a hook so when it tries to look up a flow setting, + // we can insert the just-evaluated value which hasn't yet + // been set on the flow object - otherwise delegate up to the flow + getSetting: function(name) { + if (evaluatedEnv.hasOwnProperty(name)){ + return evaluatedEnv[name] + } + return flow.getSetting(name) + } + }}, null, null); } evaluatedEnv[name] = value }