Если вы посмотрите код, который реализует загрузку модулей в node.js , вы увидите, что требуется использовать vm.runInNewContext или vm.runInThisContext под капотом.require
, однако, выполняет некоторые другие дополнительные функции, такие как кэширование модуля.
Документация узла показывает, как поведение похоже и отличается между командами vm и eval.
Итак, require, eval и vm немного отличаются, но все они могут использоваться для загрузки кода.Все они имеют схожие проблемы безопасности, если вы загружаете произвольный код, исходящий от клиента.