我在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
语句?
当然我应该能够更改图表文件的要求而不必修改索引文件吗?
答案 0 :(得分:5)
不,您不需要在每个文件中指定require('moment')
。确保当前JS库已正确安装并且它位于node_modules
目录中。
对于使用npm安装的节点模块,您可以require('moduleName')
使用它们,因此require('moment')
没问题。但是对于您自己的模块,您必须指定相对路径和文件名。因此,假设index.js
和chart.js
属于同一级别,则在index.js
require('./chart.js')
中Chart
。
其他说明:除非使用类构造函数,否则不要大写变量名。在您的代码中,您使用的是简单的对象文字,而不是构造函数,因此无需将变量名称'14:00' + '14:00' = '28:00'
大写。