mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Move externalModules back into the user dir
This commit is contained in:
@@ -12,7 +12,6 @@ const log = require("@node-red/util").log;
|
||||
const hooks = require("@node-red/util").hooks;
|
||||
|
||||
const BUILTIN_MODULES = require('module').builtinModules;
|
||||
const EXTERNAL_MODULES_DIR = "externalModules";
|
||||
|
||||
// TODO: outsource running npm to a plugin
|
||||
const NPM_COMMAND = (process.platform === "win32") ? "npm.cmd" : "npm";
|
||||
@@ -28,15 +27,30 @@ let installAllowList = ['*'];
|
||||
let installDenyList = [];
|
||||
|
||||
function getInstallDir() {
|
||||
return path.resolve(path.join(settings.userDir || process.env.NODE_RED_HOME || ".", "externalModules"));
|
||||
return path.resolve(settings.userDir || process.env.NODE_RED_HOME || ".");
|
||||
}
|
||||
|
||||
let loggedLegacyWarning = false;
|
||||
async function refreshExternalModules() {
|
||||
const externalModuleDir = path.resolve(path.join(settings.userDir || process.env.NODE_RED_HOME || ".", EXTERNAL_MODULES_DIR));
|
||||
|
||||
if (!loggedLegacyWarning) {
|
||||
loggedLegacyWarning = true;
|
||||
const oldExternalModulesDir = path.join(path.resolve(settings.userDir || process.env.NODE_RED_HOME || "."),"externalModules");
|
||||
if (fs.existsSync(oldExternalModulesDir)) {
|
||||
try {
|
||||
log.warn(log._("server.install.old-ext-mod-dir-warning",{oldDir:oldExternalModulesDir, newDir:getInstallDir()}))
|
||||
} catch(err) {console.log(err)}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
const externalModuleDir = getInstallDir();
|
||||
try {
|
||||
const pkgFile = JSON.parse(await fs.readFile(path.join(externalModuleDir,"package.json"),"utf-8"));
|
||||
knownExternalModules = pkgFile.dependencies;
|
||||
} catch(err) {
|
||||
knownExternalModules = {};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +58,7 @@ function init(_settings) {
|
||||
settings = _settings;
|
||||
knownExternalModules = {};
|
||||
installEnabled = true;
|
||||
|
||||
if (settings.externalModules && settings.externalModules.modules) {
|
||||
if (settings.externalModules.modules.allowList || settings.externalModules.modules.denyList) {
|
||||
installAllowList = settings.externalModules.modules.allowList;
|
||||
@@ -82,7 +97,7 @@ function requireModule(module) {
|
||||
e.code = "module_not_allowed";
|
||||
throw e;
|
||||
}
|
||||
const externalModuleDir = path.resolve(path.join(settings.userDir || process.env.NODE_RED_HOME || ".", EXTERNAL_MODULES_DIR));
|
||||
const externalModuleDir = getInstallDir();
|
||||
const moduleDir = path.join(externalModuleDir,"node_modules",module);
|
||||
return require(moduleDir);
|
||||
}
|
||||
|
Reference in New Issue
Block a user