Мне нужен вариант, который представляет собой функцию, которая принимает vm2
require
в качестве аргумента и возвращает новую функцию, которую следует использовать вместо vm2
require
.
В некоторой степени актуально: я использую настраиваемую файловую систему для кода, отправленного пользователем. Есть ли способ вручную справиться с локальными требованиями, такими как require('./otherUserSubmittedFile')
, получить файл из пользовательской файловой системы и передать его vm2
в песочницу?
Обновление :
Очень грубо, но реализовано что-то вроде пользовательских / виртуальных файлов: https://github.com/bartjoyce/vm2-with-custom-fs
Использование будет примерно таким:
NodeVM.file('/customfs/main.js', {
require: {
external: true,
root: '/customfs/', // restrict local requires to within the custom fs
},
customfs: {
getFileContents: (filename) => /* handle /customfs/ file read */,
exists: (filename) => /* ... */,
isDirectory: (filename) => /* ... */
}
})
@bartjoyce Мне нужно то же самое! Ваша ссылка не работает, вы ее куда-то переместили?
@callumlocke С тех пор я перешел к другим проектам и перестал поддерживать код. Код, который я написал, находится здесь: https://github.com/bartjoyce/vm2/
Позади 30 коммитов, но, по крайней мере, вы можете увидеть внесенные мной изменения.
Важный коммит: https://github.com/bartjoyce/vm2/commit/302e910610c0e1f1ef7a1d15a19a02828715f630
Я внес дополнительные изменения в vm2, которых нет в моем репо. Если вы тоже хотите их увидеть, дайте мне знать.
Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время не было активности. Он будет закрыт, если больше не будет активности. Спасибо за ваш вклад.
Самый полезный комментарий
В некоторой степени актуально: я использую настраиваемую файловую систему для кода, отправленного пользователем. Есть ли способ вручную справиться с локальными требованиями, такими как
require('./otherUserSubmittedFile')
, получить файл из пользовательской файловой системы и передать егоvm2
в песочницу?Обновление :
Очень грубо, но реализовано что-то вроде пользовательских / виртуальных файлов: https://github.com/bartjoyce/vm2-with-custom-fs
Использование будет примерно таким: