繁体   English   中英

VSCode module.exports自动完成不起作用

[英]VSCode module.exports autocomplete doesn't work

使用最新的VSCode版本1.30.2,看不到导出模块内部的功能。

这是在model.js中

var userModel = mongoose.model('userModel', usersSchema);
userModel.isUsernameTaken = isUsernameTaken;
module.exports = userModel;

function isUsernameTaken(username) {
    return userModel.findOne({username:username});
}

并在app.js中

var userModel = require('./model');

现在输入userModel。 在app.js中,我应该看到有关isUsernameTaken自动完成的建议,但它不存在,并且模型中声明的任何函数也不是“可见的”。 但是,如果我键入确切的函数名称(区分大小写)。 (例如:userModel.isUserNameTaken(etc)),它可以正常工作。 怎么了 ?

当您说userModel.isUsernameTaken(username) ,您真正要说的是mongoose.model('userModel', usersSchema).isUsernameTaken(username) ,其中它将返回未定义状态。 您需要做的是使用户模型成为其中包含mongoose.model('userModel', usersSchema)的对象。 有点像这样:

var userModel = function () {
    this.model: mongoose.model('userModel', usersSchema),
    this.isUsernameTaken: (username) => {
        return this.model.findOne({username:username});
    }
};

然后,如果要访问这些属性,可以使用var user = new userModel(); 然后使用user.isUsernameTaken(/*put username here*/); 或者,如果您想单独访问模型,则可以执行: user.model 我希望这回答了你的问题。

我设法通过更改model.js来修复它

module.exports.default = userModel;

然后在另一个文件中:

var userModel = require(./model).default;

现在,Intellisense可以正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM