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