Eu tenho um caso de teste simples no mocha, mas dá resultados muito diferentes:
const body: string = `
var moment = require('moment');
setInterval(function(){
console.log(moment().unix());
}, 2000)
`
const vm = new NodeVM({
console: 'redirect',
require: {
external: true,
root: process.cwd()
}
})
vm.run(body)
vm.on('console.log', function(consoleMessage){
console.log('from event', consoleMessage)
})
describe('Vanilla Script Test', function () {
it('should return a console log of a unix from moment', function (done) {
const body: string = `
var moment = require('moment');
setInterval(function(){
console.log(moment().unix());
}, 2000)
`
const vm = new NodeVM({
console: 'redirect',
require: {
external: true,
root: process.cwd()
}
})
vm.run(body)
vm.on('console.log', function(consoleMessage){
done()
})
})
})
VMError: You must specify script path to load relative modules.
Se você passar um nome de arquivo para vm.run
, como vm.run(body, 'myFile.js')
, ele simplesmente funcionará.
Este problema foi marcado automaticamente como obsoleto porque não teve atividade recente. Será fechado se não ocorrer mais nenhuma atividade. Obrigado por suas contribuições.
Comentários muito úteis
Se você passar um nome de arquivo para
vm.run
, comovm.run(body, 'myFile.js')
, ele simplesmente funcionará.