【发布时间】:2020-03-30 12:32:09
【问题描述】:
我正在使用 Visual Studio 代码对 Nodejs 进行编码。我非常奇怪和烦人,我写的几乎所有东西都会通过,直到运行时失败。
比如我写了这段代码
function validateRentalReturn(rental) {
const schema = Joi.object({
customerId: Joi.objectId().required,
movieId: Joi.objectId().required
});
return schema.validate(rental);
}
我忘记在required() 的末尾添加(),直到在运行时我调用此方法并开始收到以下错误"movieId" failed custom validation because Cannot read property 'presence' of undefined。
我对这个错误一无所知,但最终得到了排序,在智能感知中它显示如下
现在我怎么知道required 是property 或function。有人可以指导我如何在 VS 代码中为 Node js 代码获得正确的 Intellisense 和错误处理。
【问题讨论】:
-
从静态角度来看,这不是错误。这是一个已定义的属性;它可以被调用的事实与 IDE 无关(也许您想要传递对该方法的引用)。
-
您所描述的不是语法错误。 JavaScript 不是强类型语言,因此可以按原样执行。
-
但是
required左边的abc在描述什么,是属性还是函数? -
VSCode 需要相关库的类型才能知道这一点。它们作为一个单独的包运送,因为作者以外的其他人派生了它们。尝试运行
npm i -D @types/joi,看看您的编辑体验是否有所改善。 -
安装 types/joi 后还是一样。仍然
abc来了,而不是属性或函数
标签: javascript node.js visual-studio-code intellisense