方法未定义Node js express中的错误

时间:2017-10-12 06:02:46

标签: javascript node.js express

Controller.js

<pre>

    exports.getProducts = function(callback)
    {
      Product.find({},function(err,products)
        {
            if(products === null)
            {
                console.log('Products not available in DB');                   
            }
            if(err) 
            {
                console.log(err);
                callback(err,null);
            }
            else{callback(null,products)};         
        });     
    }
    getProducts(function (err,data){
        if(err){console.error(err);}
        else{console.log(data);}
    });

</pre>

App.js

<pre>  

    var express = require('express');
    var app = express();
    var port = process.env.PORT || 3000;
    var bodyParser = require('body-parser');
    var cors = require('cors');
    var cookieParser = require('cookie-parser');
    var session = require('express-session');
    var morgan = require('morgan');
    app.use(cors());

    var Product = require('./server/controllers/ProductController');
    Product.save();
    console.log(Product.getProducts());

</pre>

我正在尝试从app.js运行getProducts()函数,但它失败了显示&#39; getProducts&#39;没有定义 谁能告诉我我做的错误?

1 个答案:

答案 0 :(得分:2)

这里发生了什么。有很多问题,但我们会经历这些问题。

  1. 您需要ProductController.js,运行该文件中的所有代码。控制器的第一个块将一个函数getProducts设置到exports对象上。该文件的第二部分尝试调用一个名为getProducts 的函数,该函数未定义。您尝试调用的功能定义为exports.getProducts,而不是getProducts,这就是您收到未定义错误的原因。 但这仍然是错误的。更多
  2. 在app.js中,您正在调用Product.getProducts()。这是exports.getProducts()。它需要一个回调参数,在getProducts的{​​{1}}调用中未提供该参数。
  3. 希望能帮助您找到解决方案,祝您好运!