Me gustaría una opción que sea una función que tome vm2
require
como argumento y devuelva una nueva función que debería usarse en lugar de vm2
require
.
Algo relevante: estoy usando un sistema de archivos personalizado para el código enviado por el usuario. ¿Hay alguna forma en que pueda lidiar manualmente con los requisitos locales, como require('./otherUserSubmittedFile')
, obteniendo el archivo del sistema de archivos personalizado y entregándolo a vm2
y luego a la caja de arena?
Actualización :
Muy tosco, pero he implementado algo parecido a los archivos virtuales / personalizados: https://github.com/bartjoyce/vm2-with-custom-fs
Uso, sería algo como esto:
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 ¡Necesito lo mismo! Tu enlace está roto, ¿lo moviste a alguna parte?
@callumlocke Desde entonces pasé a otros proyectos y dejé de mantener el código. El código que escribí está aquí: https://github.com/bartjoyce/vm2/
Lleva 30 confirmaciones por detrás, pero al menos puedes ver las modificaciones que hice.
El compromiso importante es este: https://github.com/bartjoyce/vm2/commit/302e910610c0e1f1ef7a1d15a19a02828715f630
Hice cambios adicionales en vm2 que no están en mi repositorio. Si también quieres verlos, avísame.
Este problema se ha marcado automáticamente como obsoleto porque no ha tenido actividad reciente. Se cerrará si no se produce más actividad. Gracias por sus aportaciones.
Comentario más útil
Algo relevante: estoy usando un sistema de archivos personalizado para el código enviado por el usuario. ¿Hay alguna forma en que pueda lidiar manualmente con los requisitos locales, como
require('./otherUserSubmittedFile')
, obteniendo el archivo del sistema de archivos personalizado y entregándolo avm2
y luego a la caja de arena?Actualización :
Muy tosco, pero he implementado algo parecido a los archivos virtuales / personalizados: https://github.com/bartjoyce/vm2-with-custom-fs
Uso, sería algo como esto: