簡體   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