2017-09-04 53 views
0

我想从另一个模块调用路由中的方法。 这种表示module.exports的简化版,工作在东阳我的控制台我得到这样的getProducts错误不是函数Node.js从另一个模块访问方法

const express = require('express'); 
const router = express.Router(); 
const path = require('path'); 
const productsController = require('../controller/productsController') 

const productModel = require('../models/productModel'); 

// send html file 
router.get('/', function (req, res) { 
    res.sendFile(path.join(__dirname, '../public/esercitazione-AJAX.html')); 
    }); 
    //to /getProducts call a method from productsController 
    router.get('/getProducts', function (req, res){ 

    productsController.productsController() 
}); 

module.exports = router; 

这是我的模块

//productsController.js 
const productModel = require('../models/productModel'); 

var productsController = function() { 
    console.log('productsController') 

    var getProducts = function(req,res,callback) { 
    var callback = function(result) { 

     res.send(result); 
    } 
    productModel.getProducts(req, res, callback); 
    } 
} 

module.exports = new productsController(); 

回答

0

的主要问题是,你不是导出函数,而是一个对象。只是导出功能:

module.exports = productsController; 

的另一个问题,是你的函数有不正确的名称,productsController是一个模块,而是函数名应该是这样的getProducts

exports.getProducts = function() { 
    console.log('getProducts ') 

    var getProducts = function(req,res,callback) { 
    ... 

而且使用这样:

const productsController = require('../controller/productsController'); 

productsController.getProducts(); 
+0

如果我使用这种表示法,我得到这个错误 TypeError:productsController.getProducts不是一个函数,我需要导出一个对象和辅助功能ss到一个方法productsController,这是我的目标 –

+0

你确定你复制了我所有的代码吗? – alexmac

+0

我的错误对不起,现在我已经复制了正确的代码,但是这种导出等于module.exports = new module(); –

相关问题