Javascript TypeError:undefined不是初始化实例时的函数

我得到一个JS TypeError: undefined is not a function当试图创build一个模式我定义和导入的实例。

article.js

 var mongoose = require("mongoose"); var Schema = mongoose.Schema; // Article Schema var ArticleSchema = new Schema({ title : { type: String, required: true, index: { unique: true }}, author : { type: String, required: true }, day : { type: String, required: true }, month : { type: String, required: true }, year : { type: String, required: true }, link : { type: String, required: true }, password : { type: String, required: false, select: false } }); module.exports = mongoose.model("Article", ArticleSchema); 

api.js

 var bodyParser = require("body-parser"); // get body-parser var article = require("../models/article"); var config = require("../../config"); module.exports = function(app, express) { var apiRouter = express.Router(); // Some stuff var article = new article(); // create a new instance of the article model // ... 

当api尝试创build新文章时,错误正在被抛出,下面是完整错误的截图:

类型错误

行34:34是当我尝试启动新的文章。

我知道这个问题总是被问到,如果错误是非常愚蠢的,我很抱歉,但是我经历了20个不同的“TypeError:undefined”问题,尝试了不同的东西,我不能修理它。

你正在声明一个名为“article”的variables。 这与您导入的模块使用的名称相同,因此您的本地variables将隐藏更全局的variables。 variables从没有值开始,所以它们是undefined

如果您更改本地variables名称,则假定您的导出设置正确,您将能够访问该构造函数。

使用不同的名称:如果你做var article你会覆盖最初的var article ,因此它不起作用。

最好的做法是使用大写的ModelNames:

 var bodyParser = require("body-parser"); // get body-parser var Article = require("../models/article"); var config = require("../../config"); module.exports = function(app, express) { var apiRouter = express.Router(); // Some stuff var article = new Article(); // create a new instance of the article model // ... 

尝试这样,现在应该工作:)