Node js object exports

给你一囗甜甜゛ 提交于 2019-12-21 02:30:11

问题


Got a pretty simple question to which I cant find an answer regarding exporting a object form a module in Node js, more specifically accessing the objects properties.

Here is my object I export:

exports.caravan = {
    month: "july"
};

And here is my main module:

var caravan = require("./caravan")

console.log(caravan.month);
console.log(caravan.caravan.month);

Why cant I access the properties directly with caravan.month but have to write caravan.caravan.month?


回答1:


Consider that with require, you gain access to the module.exports object of a module (which is aliased to exports, but there are some subtleties to using exports that make using module.exports a better choice).

Taking your code:

exports.caravan = { month: "july" };

Which is similar to this:

module.exports.caravan = { month: "july" };

Which is similar to this:

module.exports = {
  caravan : { month: "july" }
};

If we similarly "translate" the require, by substituting it with the contents of module.exports, your code becomes this:

var caravan = {
  caravan : { month: "july" }
};

Which explains why you need to use caravan.caravan.month.

If you want to remove the extra level of indirection, you can use this in your module:

module.exports = {
  month: "july"
};



回答2:


If you want to get via caravan.month then:

module.exports = {
    month: "july"
};



回答3:


If you want to get the object, use

module.exports = {
  caravan = {
       month: "july"
  }
};

and then get it like this:

var caravan = require("./caravan")

You may also check:

console.log(caravan.caravan.month);


来源:https://stackoverflow.com/questions/38283777/node-js-object-exports

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!