gpt4 book ai didi

node.js - Typescript 在 Mongoose pre hook 中引发编译错误(预期 1 个参数,但得到 0)

转载 作者:行者123 更新时间:2023-12-04 08:28:03 24 4
gpt4 key购买 nike

我正在查看放置在 users.ts 中的示例代码文件,在用户模型中。

userSchema.pre('save', async function(done) {
if (this.isModified('password')) {
const hashed = await Password.toHash(this.get('password'));
this.set('password', hashed);
}
done();
});
但是,当我尝试构建它时出现编译错误:
src/models/user.ts(44,3): error TS2554: Expected 1 arguments, but got 0.
抛出的错误看起来是 done() 的错误,好像我把它注释掉或者改成 done(null)一切顺利。但是我不确定为什么会发生这种情况,因为 typescript 指出 done() 的以下格式:
(parameter) done: mongoose.HookNextFunction
(error?: mongoose.Error | undefined) => any
它应该能够接受未定义的值/内部为空 done() ,不应该吗?
也在变
async function(done) ===> async function(done: any)
也解决了这个问题。
我试图解决的问题是为什么会发生这种情况,因为我从示例中提取了确切的代码并尝试运行它,相同的 typescript 版本和类型文件。
"typescript": "^3.8.3"
"mongoose": "^5.9.7",
"@types/mongoose": "^5.7.8",
但是对我来说它不起作用,我似乎无法理解为什么我必须放置 : any在参数括号内以使其工作。

最佳答案

如果你去找你正在做的类(class)的讲师 138,你会找到解决方案。
对于其他人来说,是因为新版本的 mongoose 带有自己的类型定义并覆盖了您的 @types/mongoose。
要解决您的问题,您必须坚持使用 5.10 中的最新版本 mongoose,即 5.10.19 版本,因此您应该从 package.json 中该库的版本中删除 ^ 或 ~ 并使用 5.10.19 版本。

关于node.js - Typescript 在 Mongoose pre hook 中引发编译错误(预期 1 个参数,但得到 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65163605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com