NodeJS 如何在vscode中获取express.js的智能感知

xt0899hw  于 2023-05-22  发布在  Node.js
关注(0)|答案(4)|浏览(204)

我尝试安装类型定义:
我的代码在**server.js**javascript文件中。

npm install @types/express

但在示例化express之后,它似乎仍然没有为app给予智能感知。
但是当我这样使用express时:

app = express() ;

app.listen(8000) ;

我没有获取express的应用示例的codecomplement或intellisense。

如何解决这个问题?

blmhpbnm

blmhpbnm1#

快速修复

将此JsDoc注解添加到您的控制器:

/** @type {import("express").RequestHandler} */
exports.myController = (req, res) => {
  // biz logic. ( here you would get intelliscence on req, res objects )
  const { id } = req.query;
  const { data } = req.body;
  res.status(200).json({data});
}
可选

如果您使用的是typescript,则可以创建一个实用函数来 Package 实际的处理程序,以避免在每个控制器上编写RequestHandler类型。

// endpoint.ts
import { RequestHandler } from 'express';

export const endpoint = (cb: RequestHandler) => {
  const handler: RequestHandler  = (req, res, next) => {
    cb(req,res,next)
  }
  return handler
}
// myController.ts
import { endpoint } from 'utils/endpoint';

export const myEndpoint = endpoint((req,res) => {
  res.send("Hey!");
});
mbzjlibv

mbzjlibv2#

导入此代码:
/**@type {import(“express”).RequestHandler} */

jgwigjjp

jgwigjjp3#

我的回答有点延迟,但我还是说:
您使用的是.js文件,因此类型不存在于其中。当你通过npm安装@types/something依赖项时,这允许你使用类型,但只能在Typescript中使用。

ufj5ltwl

ufj5ltwl4#

VS代码编辑器支持许多编程语言的代码自动完成,如Javascript,TypeScript,JSON,HTML,CSS,Less和Sass。至于其他编程语言,你可能需要去安装插件。
要获得自动完成,请键入一个关键字,然后按Ctrl+空格键以获得代码自动完成建议,如下所示。

但是如果你仍然没有得到,那么你需要回去检查你的设置。转到文件->首选项->设置,这将打开一个窗口,您可以在其中更改一些首选项

在本节中转到文本编辑器和建议,并检查快速建议的设置,如是否启用,以及建议出现的延迟设置,您可以在其中进行更改并检查它是否工作。希望这对你有帮助。

相关问题