如何在Node中使用require和module.exports而不重复?

时间:2015-05-27 16:03:37

标签: javascript node.js

我在Node中创建了一个名为chart.js的类文件,它依赖于moment.js和一堆其他外部依赖项:

var moment = require('moment');
...
var Chart = {
  doSomething: function() { 
  } ...
};
module.exports = Chart;

现在我想在我的chart.js文件中使用这个index.js模块,所以我按如下方式导入它:

var chart = require('chart');
chart.doSomething();

但是这给了我导入错误:

ReferenceError: moment is not defined

我是否还需要在require('moment')的顶部重新包含所有index.js语句?

当然我应该能够更改图表文件的要求而不必修改索引文件吗?

1 个答案:

答案 0 :(得分:5)

不,您不需要在每个文件中指定require('moment')。确保当前JS库已正确安装并且它位于node_modules目录中。

对于使用npm安装的节点模块,您可以require('moduleName')使用它们,因此require('moment')没问题。但是对于您自己的模块,您必须指定相对路径和文件名。因此,假设index.jschart.js属于同一级别,则在index.js require('./chart.js')Chart

其他说明:除非使用类构造函数,否则不要大写变量名。在您的代码中,您使用的是简单的对象文字,而不是构造函数,因此无需将变量名称'14:00' + '14:00' = '28:00'大写。