[英]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.