我有一个简单的Node.js驱动的自定义静态站点生成器设置,我传递了两个选项,一个简单的模板和一些用于站点数据的JSON。我有以下数据文件:
// collections.js
var collection = require('./collection');
module.exports = [
collection
]
// collection.js
var product = require('./product');
module.exports = {
"id": 1,
"title": "Collection",
"products": [
product
]
}
// product.js
var collections = require('./collections');
module.exports = {
"id": 4759071046,
"title": "Product",
"collections": collections,
"price": 2000,
"content": "This is a test product."
};
编辑:这不是一个包含多个module.exports
的大文件,它们是单独的文件;当您看到// collections.js
时,这表示它是一个名为collections.js的单独文件,当您看到// collection.js
时,这表示它是一个名为collection.js的单独文件,当您看到// product.js
时,这表示它是一个名为product.js的单独文件
我对通过require()
进行模块加载非常陌生,所以我觉得我在某个地方遇到了某种依赖循环错误,但我没有错误,只是在我console.log()
时出现错误的数据结构数据:
// collections.js
[
{
"id": 1,
"title": "Collection",
"products": [
{
}
]
}
]
// collection.js
{
"id": 1,
"title": "Collection",
"products": [
{
}
]
}
// product.js
{
"id": 4759071046,
"title": "Product",
"collections": [
{
"id": 1,
"title": "Collection",
"products": [
{
}
]
}
],
"price": 2000,
"content": "This is a test product."
}
注意空的products
对象数组?我不知道为什么会这样,任何帮助都会非常感激!
答案 0 :(得分:0)
如果您运行"节点集合"从命令行,这将执行collections.js文件中的代码。 (假设你在同一个目录中)
当节点看到类似var collection = require(' ./ someFile')的内容时,它将在someFile中执行代码。如果someFile有一个require语句,那么node将执行该require语句中传递的文件中包含的代码。
如下所述,对于每个所需的文件,此过程将发生一次,因此即使您没有使用导入的对象,也必须考虑到这一点。