У меня есть два файла, которые объявляют класс, оба с static
функциями:
foo.js:
const bar = require('./bar');
console.log('bar in foo: ');
console.log(bar);
class foo {
static _(test) {
return 'foo_' + test + bar._(test);
}
static bar() {
return 'bar';
}
}
module.exports = foo;
bar.js:
const foo = require('./foo');
console.log('foo in bar:');
console.log(foo);
class bar {
static _(test) {
return foo.bar(test);
}
}
module.exports = bar;
В VS Code код завершения работает в обоих файлах, чтобы получить статический метод другого файла.
Но когда я пытаюсь его выполнить:
const foo = require('./foo');
foo._('test');
Я вижу, что рекурсивныйrequire
не работает так, как я думал:
foo in bar:
{}
bar in foo:
[Function: bar]
bar.js:8
return foo.bar(test);
^
TypeError: foo.bar is not a function
Я знаю, * class
в JS - это синтаксический сахар вокруг функций, но я все еще удивлен, что интерпретатор теряет static
членов.
Кто-нибудь может объяснить работу require в этом случае?И почему это приводит к пустому объекту?