jschardet
jschardet copied to clipboard
`jschardet.min.js` cannot be loaded into `vm` in node.js
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