Кажется невозможным создать переменную, используя eval
в Node.js ES6, но я не могу понять, почему. Это происходит со мной в CentOS 7, но я не верю, что проблема здесь в ОС.
Обычный файл Node.js (test.js):
eval("var a=1");
console.log(a);
Создайте тот же файл с расширением .mjs для запуска с Node.js ES6 (test.mjs):
eval("var a=1");
console.log(a);
После этого запустите 2 файла с Node.js и Node.js ES6:
$ node test.js
1
$ node --experimental-modules test.mjs
(node:9966) ExperimentalWarning: The ESM module loader is experimental.
ReferenceError: a is not defined
at file:///temp/test.mjs:2:13
at ModuleJob.run (internal/modules/esm/module_job.js:96:12)
Это проблема, связанная с ES6? Я пробовал на консоли браузера, и проблема та же:
>> eval("var a=1"); console.log(a);
1
>> class c { static f(){ eval("var a=1"); console.log(a); } }
c.f()
ReferenceError: a is not defined
Я использую Node.js 10.9.0, это баг или есть причина?