n8n/packages/core/src/nodes-loader/load-class-in-isolation.ts
2025-01-17 15:17:25 +01:00

11 lines
375 B
TypeScript

import { createContext, Script } from 'vm';
const context = createContext({ require });
export const loadClassInIsolation = <T>(filePath: string, className: string) => {
if (process.platform === 'win32') {
filePath = filePath.replace(/\\/g, '/');
}
const script = new Script(`new (require('${filePath}').${className})()`);
return script.runInContext(context) as T;
};