UNPKG

node-version-use

Version:

Cross-platform solution for using multiple versions of node. Useful for compatibility testing

34 lines (33 loc) 1.46 kB
import installModule from 'install-module-linked'; import path from 'path'; import url from 'url'; const _dirname = path.dirname(typeof __filename === 'undefined' ? url.fileURLToPath(import.meta.url) : __filename); const nodeModules = path.join(_dirname, '..', '..', '..', 'node_modules'); const moduleName = 'node-version-install'; let cached; function loadModule(moduleName, callback) { if (typeof require === 'undefined') { import(moduleName).then((mod)=>{ var _ref; callback(null, (_ref = mod === null || mod === void 0 ? void 0 : mod.default) !== null && _ref !== void 0 ? _ref : null); }).catch((err)=>callback(err instanceof Error ? err : new Error(String(err)), null)); } else { try { callback(null, require(moduleName)); } catch (err) { callback(err instanceof Error ? err : new Error(String(err)), null); } } } export default function loadNodeVersionInstall(callback) { if (cached !== undefined) return callback(undefined, cached); installModule(moduleName, nodeModules, {}, (err)=>{ if (err) return callback(err); loadModule(moduleName, (err, _cached)=>{ if (err) return callback(err instanceof Error ? err : new Error(String(err))); if (!_cached) return callback(new Error(`Failed to load ${moduleName}`)); cached = _cached; callback(undefined, cached); }); }); }