Об импорте модулей в TypeScript
У меня есть такая файловая структура:
∟ src
∟ math
├ funcs.ts
├ constants.ts
├ index.ts
├ index.ts
На моемsrc/index.ts
, я пробовал это:
import * as math from './math/index.js';
console.log(`pi = ${math.PI}`);
console.log(`The area of a circle with radius 4 is ${math.circleArea(4)}`);
и все работает отлично.
Однако мне нужно использовать Express.js, поэтому я обновил код:
import express from 'express';
import * as math from './math/index.js';
console.log(`pi = ${math.PI}`);
console.log(`The area of a circle with radius 4 is ${math.circleArea(4)}`);
Теперь у меня есть эта ошибка:
src/index.ts:1:21 - error TS2792: Cannot find module 'express'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?
Это мой tsconfig.json:
{
"compilerOptions": {
"outDir":"build",
"target": "ES2022",
"module": "ES2022"
}
}
и это мой package.json:
{
"name": "typescript-lab",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "tsc",
"start": "npm run build && node ./build/index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.18.1",
"typescript": "^4.7.4"
}
}
Причина, по которой я не могу настроить tsconfig.json для использования module='node', заключается в том, что я хочу иметь возможность правильно импортировать свои (собственные) модули, и мне также нужно использовать самый верхний на моемindex.ts
файл...
Все мои попытки изменитьpackage.json
илиtsconfig.json
привели либо к:
- я не могу использовать самый верхний
await
- Я не могу импортировать/найти свои модули
- Я не могу импортировать какой-либо модуль узла (в данном случае экспресс)
Может кто-нибудь мне помочь? Спасибо