node/test/es-module/test-dynamic-import-script-...

33 lines
812 B
JavaScript

// Flags: --expose-gc --experimental-vm-modules
'use strict';
// This tests that vm.Script would not get GC'ed while the script can still
// initiate dynamic import.
// See https://github.com/nodejs/node/issues/43205.
require('../common');
const vm = require('vm');
const code = `
new Promise(resolve => {
setTimeout(() => {
gc(); // vm.Script should not be GC'ed while the script is alive.
resolve();
}, 1);
}).then(() => import('foo'));`;
// vm.runInThisContext creates a vm.Script underneath, which should not be GC'ed
// while import() can still be initiated.
vm.runInThisContext(code, {
async importModuleDynamically() {
const m = new vm.SyntheticModule(['bar'], () => {
m.setExport('bar', 1);
});
await m.link(() => {});
await m.evaluate();
return m;
}
});