У меня есть этот маленький кусочек кода:Node JS и пользовательский модуль с экспресс-JS
'use strict';
module.exports = MainCtrl;
function MainCtrl() {
this.defaultUrl = 'http://foo/';
}
MainCtrl.prototype.getPoi = function getPoi() {
request('http://foo/',function(error,response,body) {
console.log(body);
});
};
и на моем файле маршрута я требую, как это:
var express = require('express');
var request = require('request');
var main_lib = require('../lib/main_ctrl.js');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/newroute', function(req,res) {
//var mainCtrl = new main_lib.MainCtrl();
main_lib.getPoi();
res.render('newroute', { title: 'New Route' });
})
module.exports = router;
Как вы видите, очень просто, я на первых шагах с ExpressJS и NodeJS, но я не знаю, почему я получил эту ошибку:
TypeError: функция объекта MainCtrl() {this.defaultUrl = 'http://foo/ '; } Не имеет метод «getPoi»
Я взглянуть на определение модуля просмотра на экспресс-Lib и так же, как:
module.exports = View;
function View(name, options) { .. }
View.prototype.lookup = function lookup(name) { .. }
Но я не могу понять, что я делаю неправильно.
@Manwal Он имеет то, что это не ошибка здесь. Чтобы использовать ваш прототип, вам нужно создать экземпляр своего контроллера с помощью ключевого слова 'new'. –