javascript - node.js 中的相互依赖包含导致空对象
问题描述
我有两个文件声明一个类,它们都有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 的工作原理吗?为什么它会导致一个空对象?
解决方案
推荐阅读
- arrays - 将长字符串拆分为数组并保留分隔符
- java - 如何从 sqlite 中删除未在列表中列出的键?
- swift - SwiftUI:如何更改 NavigationView.toolbar 背景颜色
- python - Python 全局计数
- python - 为什么通过除法而不是乘法来精确表示二进制?
- python - 从回调中打印会破坏模型打印的数据,拟合和数据值不同
- java - 如何处理 java.lang.IllegalArgumentException 以播放音频?
- node.js - 使用 Webpack/Babel 从 ES6 为 Node.js 生成 CommonJS 兼容包
- sql - PostgreSQL如何获取具有两个或多个满足相同条件的列的行
- go - 在 Golang (yaml) 中将特定结构解组为字符串