mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
Fallback to 'require' if on node < 12.17
This commit is contained in:
parent
31c5d6e1c1
commit
66a704af55
@ -494,7 +494,7 @@ module.exports = function(RED) {
|
|||||||
node.error(err);
|
node.error(err);
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
throw new Error(RED._("function.error.externalModuleLoadError"));
|
node.error(RED._("function.error.externalModuleLoadError"));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
RED.nodes.registerType("function",FunctionNode, {
|
RED.nodes.registerType("function",FunctionNode, {
|
||||||
|
@ -26,6 +26,12 @@ let installEnabled = true;
|
|||||||
let installAllowList = ['*'];
|
let installAllowList = ['*'];
|
||||||
let installDenyList = [];
|
let installDenyList = [];
|
||||||
|
|
||||||
|
let IMPORT_SUPPORTED = true;
|
||||||
|
const nodeVersionParts = process.versions.node.split(".").map(v => parseInt(v));
|
||||||
|
if (nodeVersionParts[0] < 12 || (nodeVersionParts[0] === 12 && nodeVersionParts[1] < 17)) {
|
||||||
|
IMPORT_SUPPORTED = false;
|
||||||
|
}
|
||||||
|
|
||||||
function getInstallDir() {
|
function getInstallDir() {
|
||||||
return path.resolve(settings.userDir || process.env.NODE_RED_HOME || ".");
|
return path.resolve(settings.userDir || process.env.NODE_RED_HOME || ".");
|
||||||
}
|
}
|
||||||
@ -102,6 +108,18 @@ function requireModule(module) {
|
|||||||
return require(moduleDir);
|
return require(moduleDir);
|
||||||
}
|
}
|
||||||
function importModule(module) {
|
function importModule(module) {
|
||||||
|
if (!IMPORT_SUPPORTED) {
|
||||||
|
// On Node < 12.17 - fall back to try a require
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
try {
|
||||||
|
const mod = requireModule(module);
|
||||||
|
resolve(mod);
|
||||||
|
} catch(err) {
|
||||||
|
reject(err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (!registryUtil.checkModuleAllowed( module, null,installAllowList,installDenyList)) {
|
if (!registryUtil.checkModuleAllowed( module, null,installAllowList,installDenyList)) {
|
||||||
const e = new Error("Module not allowed");
|
const e = new Error("Module not allowed");
|
||||||
e.code = "module_not_allowed";
|
e.code = "module_not_allowed";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user