2015-11-26 2 views
1

Я пытаюсь разделить функции модуля узла на дополнительные файлы, так как есть множество функций, которые я хочу добавить.Как я могу разделить модуль узла на дополнительные файлы?

Я хотел бы вызывать функции основного файла в файлы, загруженные из библиотеки, и быть в состоянии вызвать Lib функции непосредственно, см:

В моем главном файле index.js:

function Api(opt) { 
    // set options 
} 

Api.prototype.get = function (endpoint) { 
    return this.request('GET', endpoint, null); 
}; 

Api.prototype.Catalog = require('./lib/catalog.js'); 

module.exports = Api; 

Тогда в lib/catalog.js

function Catalog() {}; 

Catalog.prototype.getCategories = function() { 
    return Api.get('categories'); 
} 

module.exports = Catalog; 

Тогда я надеюсь достичь следующего, когда требуется модуль, поэтому файл каталога будет предоставлять доступ к:

var Module = require('module'); 

api = new Module({ 
    url: 'http://example.com', // without trailing slash 
    username: 'username', 
    password: 'password' 
}); 

api.Catalog.getCategories(); 

Когда делать это таким образом я получаю следующее сообщение об ошибке:

TypeError: Cannot read property 'getCategories' of undefined 

Есть ли рекомендуемый способ для достижения этой цели, или, возможно, разделяя его на несколько модулей узла?

+0

вам нужно добавить требуют, чтобы они были доступны, прежде чем сделать звонок. – Sachin

ответ

0

Попробуйте добавить требуется для новых модулей

var Module = require('module'); 
var Catalog = require('Catalog'); 
var Api = require('Api'); 

api = new Module({ 
    url: 'http://example.com', // without trailing slash 
    username: 'username', 
    password: 'password' 
}); 

api.Catalog.getCategories(); 
+0

Это не загрузило бы их из lib, хотя их нужно было бы разделить на отдельные модули для Api и Catalog? 'Var Module = require ('module');' должен был показать загрузку файла 'index.js' для загрузки функций Api, в вашем примере это разделение? –

Смежные вопросы