Как получить intellisense для промежуточного программного обеспечения Express во внешнем файле в vscode? - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь написать промежуточное программное обеспечение экспресса. И я написал это в одном файле test2.js

На сервере я могу иметь intellisense, например:

enter image description here

В этом отдельном файле промежуточное ПО работает нормально, но у меня не может быть intellisense req и res

Есть ли способ получить intellisense?


Вот мой сервер 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();
};

1 Ответ

0 голосов
/ 29 июня 2018

Может быть JSDoc это вариант? Вам может понадобиться npm i @types/express -D (но я думаю, vscode все равно делает это в фоновом режиме)

// The require is painful. I wonder if there is a away to do without it?
const Express = require("express");

/** @type {Express.RequestHandler} */
module.exports = function (req, res, next) {
    req.???
    next();
}

Или вместо этого вы можете начать использовать машинопись. ;)

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


Я обнаружил, что вы можете использовать файл объявления машинописного текста:

myTypes.d.ts

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

Типы шрифтов обычно связаны с областью действия модуля, но вы можете импортировать любой тип и повторно объявить его в глобальной области.

Теперь vscode находит типы без добавления импорта.

myMiddleware.js

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