jschardet icon indicating copy to clipboard operation
jschardet copied to clipboard

`jschardet.min.js` cannot be loaded into `vm` in node.js

Open bpasero opened this issue 1 year ago • 0 comments

See this code:

const vm = require('vm');
const mod = require('module');
const fs = require('fs');

const content = fs.readFileSync('<path to>/jschardet.min.js', 'utf8');
const scriptSource = mod.wrap(content.replace(/^#!.*/, ''));
const script = new vm.Script(scriptSource);
const compileWrapper = script.runInThisContext({
    filename: 'jschardet.js',
    displayErrors: true
});

console.log(compileWrapper.apply(globalThis, []));

When you run it with node.js 20.x:

TypeError: Cannot read properties of undefined (reading 'iterator')
    at $jscomp.initSymbolIterator (evalmachine.<anonymous>:1:384)
    at $jscomp.makeIterator (evalmachine.<anonymous>:2:42)
    at evalmachine.<anonymous>:164:334
    at new c (evalmachine.<anonymous>:164:465)
    at evalmachine.<anonymous>:662:132
    at 42../constants (evalmachine.<anonymous>:662:395)
    at f (evalmachine.<anonymous>:5:32)
    at evalmachine.<anonymous>:5:66
    at 19../logger (evalmachine.<anonymous>:390:112)
    at f (evalmachine.<anonymous>:5:32)

Fix is in https://github.com/aadsm/jschardet/pull/96

bpasero avatar Jul 09 '24 18:07 bpasero