在我的 Node.js 项目(使用 VS Code IDE)中,未显示 Mongoose 模式智能感知。我正在学习 Udemy Node.js 课程。在那里,课程讲师的 VS Code 展示了 Mongoose 模式智能感知。我的意思是,当他们输入“type”属性时,VS Code 会建议使用 Mongoose 模式的“type”属性。也适用于其他属性,如“必需”、“默认”、“最小”、“最大”等。
但是,在我的 VS Code 中,它没有显示猫鼬模式智能感知。
我不使用 TypeScript,它只是一个 Vanilla JS (Node.js) 项目。
我几乎一整天都在寻找解决方案。但无法解决我的问题。
有些人会这样说:
npm i mongoose -g
(对我不起作用)npm i @types/mongoose
(这个 NPM 包已于 2 年前被弃用)我的 Node.js 版本是 v20.2.0。
我的 VS Code 版本是 1.78.2“用户”安装程序
我的 mongoose npm 软件包版本是 [电子邮件受保护]
我在 Windows 10 上运行
Udemy 教练使用的
我正在学习的 Udemy Node.js 课程是 Maximilian Schwarzmüller 的“NodeJS - 完整指南(MVC、REST API、GraphQL、Deno)” [https://www.udemy.com/course/nodejs-the-complete-指南/]
Udemy讲师视频截图如下。 该视频的链接是[https://www.udemy.com/course/nodejs-the-complete-guide/learn/lecture/11954140#content]。 视频截图的时间跨度是03:46。
这是我的问题的屏幕截图(在我的 VS Code 上):
这是我的代码:
/**
* models/Product.js (Product Model file)
*/
import mongoose from "mongoose";
const Schema = mongoose.Schema;
const productSchema = new Schema({
title: {
type: String,
required: true,
}
});
const Product = mongoose.model('Product', productSchema);
export default Product;
正如一位 stackoverflow 助手 @starball 所要求的,我在下面提供了讲师的来源和我的“npm 列表”。
这里是 Udemy Instructor 的源代码 [https://github.com/HponeThitHtoo/ saving-mongoose] (@starball 对我之前的拼写错误感到抱歉。Udemy 讲师没有在 GitHub 上上传他的源代码。他只是在他的 Udemy 课程中提供了 zip 文件的链接”。因此,我将他的源代码上传到我的 GitHub 帐户。 )
这是我的 npm list @types/mongoose
您的讲师使用了
[email protected]
,这是在 Mongoose 开始在自己的包中发布自己的 TypeScript 类型定义之前的某个时间点,所以您应该 npm i -D '@types/mongoose@~5.2.0'
。 ~
表示任何与 5.2
匹配的内容(5.2
下的任何补丁版本)。你应该这样做的原因是因为绝对类型包的编写是为了匹配它们提供类型的 JS 包的主要版本和次要版本(source)。
当您使用 Mongoose 主要版本 7 并且您的讲师使用主要版本 5 时,您所尝试的方法不起作用,您不应该感到惊讶。在 semver 中,主要版本意味着重大更改。
解决方案很简单,但很难找到。将其添加到您的架构上方
/**