javascript - 如何在vscode的外部文件中获取express中间件的智能感知?

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

我正在尝试编写 express 的中间件。我把它写在一个文件 test2.js 中

在服务器中,我可以像这样拥有智能感知:

enter image description here

在那个单一文件中,中间件工作正常,但我无法获得req 和 res

的智能感知

有什么方法可以获取智能感知吗?


这是我的服务器test1.js:

//test1.js
let http = require("http");
let express = require("express");
let app = express();

let middle = require("./test2.js");
app.use(middle);

app.use(function(req, res, next) {
  next();
});
http.createServer(app).listen(80);

这是我的中间件test2.js:

//test2.js
module.exports = function(req, res, next) {
  console.log("middle");
  next();
};

最佳答案

也许 JSDoc 是一个选项? 您可能需要安装类型定义:npm i @types/express -D (VS Code 中的“自动类型获取”可能会或可能不会自动为您执行此操作)

/** @type {import("express").RequestHandler} */
module.exports = function (req, res, next) {
    req. // intellisense works
    next();
}

https://github.com/Microsoft/TypeScript/wiki/JSDoc-support-in-JavaScript


你也可以使用你自己的 typescript 声明文件:

我的类型.d.ts

import Express from "express";
declare global { 
    type RequestHandler = Express.RequestHandler;
}

类型通常绑定(bind)到模块的范围,但您可以导入任何类型并在全局范围内重新声明它。

现在 vscode 找到没有“脏”的类型 {import("express")}

我的中间件.js

/** @type RequestHandler */
module.exports = function (req, res, next) {
    req. // intellisense works
}

关于javascript - 如何在vscode的外部文件中获取express中间件的智能感知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51099835/

相关文章:

javascript - 滚动直到组件可见时如何更改导航栏上的事件选项卡?

node.js - 我应该像这样使用 redis : req. session.surname = 'toto' 还是像这样 client.set ('surname' , 'toto' )

javascript - Azure服务总线队列使用nodejs读取批量消息

node.js - Express 无法从后面读取未定义的属性 'name'

mysql - Node js 中与 Restful-Sequelize 和 mysql 的嵌套关联

javascript - 如何从 JavaScript 中的平面数据构建层次结构树?

javascript - Node.js http 请求未结束

node.js - Socket.io跨域连接失败; 'XMLHttpRequest cannot load ...'

javascript - 在 AngularJS html5mode Express 环境中提供文件下载服务

javascript - jQuery 行验证