Node.js模块需要依赖性问题

时间:2016-04-01 02:29:51

标签: javascript node.js object require javascript-objects

我有一个简单的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对象数组?我不知道为什么会这样,任何帮助都会非常感激!

1 个答案:

答案 0 :(得分:0)

如果您运行"节点集合"从命令行,这将执行collections.js文件中的代码。 (假设你在同一个目录中)

当节点看到类似var collection = require(' ./ someFile')的内容时,它将在someFile中执行代码。如果someFile有一个require语句,那么node将执行该require语句中传递的文件中包含的代码。

如下所述,对于每个所需的文件,此过程将发生一次,因此即使您没有使用导入的对象,也必须考虑到这一点。