【问题标题】:Visual studio code catching syntax errors捕获语法错误的 Visual Studio 代码
【发布时间】: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

我对这个错误一无所知,但最终得到了排序,在智能感知中它显示如下

现在我怎么知道requiredpropertyfunction。有人可以指导我如何在 VS 代码中为 Node js 代码获得正确的 Intellisense 和错误处理。

【问题讨论】:

  • 从静态角度来看,这不是错误。这是一个已定义的属性;它可以被调用的事实与 IDE 无关(也许您想要传递对该方法的引用)。
  • 您所描述的不是语法错误。 JavaScript 不是强类型语言,因此可以按原样执行。
  • 但是required左边的abc在描述什么,是属性还是函数?
  • VSCode 需要相关库的类型才能知道这一点。它们作为一个单独的包运送,因为作者以外的其他人派生了它们。尝试运行npm i -D @types/joi,看看您的编辑体验是否有所改善。
  • 安装 types/joi 后还是一样。仍然 abc 来了,而不是属性或函数

标签: javascript node.js visual-studio-code intellisense


【解决方案1】:

您可能想使用 Typescript 而不是 vanilla Javascript。它的语法几乎相同,但它是 Javascript 的类型化版本。除此之外,linter 对于这类事情也很有用。对于 typescript,您可以使用 TSlint,但您可以将 ESlint 用于纯 javascript。 希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2022-11-30
    • 2019-06-28
    • 2019-09-19
    • 1970-01-01
    • 2019-09-28
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多