@dufrein2013

Почему в nodejs typescript проекте редактор vscode не дает предложений по импорту expressjs?

В проекте на nodejs с typescript, поставил express, пишу код:
export const server = express()
vscode подсвечивает ошибку, что express не найден, навожу правой кнопкой на него чтобы выбрать автопредложение по импорту, как это обычно бывает на react проектах, но vscode не дает никаких предложений.
Все что vscode предлагает это 'add missing function declaration.
6725d822a0e39425031409.png
Вот код tsconfig.json:
{
  "compilerOptions": {
    "lib": ["es2023"],
    "module": "node16",
    "target": "es2022",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "moduleResolution": "node16",
    "outDir": "dist",
    "rootDir": "src",
    "baseUrl": ".",
    "sourceMap": true,
    "paths": {
      "@/*": ["src/*"]
    },  
    "checkJs": true,
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules", ".idea", "**/*.test.ts"]
}


Вот список дев зависимостей:
"devDependencies": {
    "@types/cookie-parser": "^1.4.7",
    "@types/express": "^5.0.0",
    "@types/express-session": "^1.18.0",
    "@types/morgan": "^1.9.9",
    "@types/node": "^22.8.5",
    "ts-node-dev": "^2.0.0",
    "tsconfig-paths": "^4.2.0",
    "typescript": "^5.6.3"
  }
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
А @types/express поставили?

UPD:
Посмотрел и понял, что "отдельное спасибо" тем, кто делал типизацию для express'а - в файле типов экспортируется в стандартное окружение переменная e, вот она уже корректно импортируется.
672a1f7f2cf11349047146.png
672a1f82553b7537120235.png
В теории можно создать d.ts-файл с редекларацией типов, но в этом не разбирался.

Как альтернатива - посмотреть на более интересные аналоги express'а - Elysia.js для bun, или Fastify для node. Ну и ещё такой совет - выкинуть ts-node, столько проблем с алиасами и расширениями файлов будет, что кошмар просто. Можно заюзать vite-node.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dima9595
@dima9595
Junior PHP
1. По правилам площадки запрещено публиковать код в картинках.
2. Что бы что-то экспортировать - нужно что-то импортировать. Если вы не делали импорт для express(), то и vscode не знает что такое express().
PS: Возможно, это есть в первой строке, но так и не скажешь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы