Примечание: для рабочего примера с nodemon перейдите ко второму разделу моего ответа.
Если вы имеете в виду, что после компиляции файлов и запуска приложения модулине найден, тогда посмотрите на эту ветку: Карты путей к модулям не разрешены в передаваемом коде.
"Пути" предназначены для использования с загрузчиками, которые позволяют перераспределять
Скажем, у меня есть этот путь в моем tsconfig.json :
"paths": {
"@config/*": ["src/config/*"]
}
И мне нужен файл, использующий этот путь в файле
import test from '@config/test';
Глядя в скомпилированный файл, я получаю
var test_1 = __importDefault(require("@config/test"));
Как видите, пути не были разрешены, это все еще @ config / test. То же самое произойдет при тестировании вашего приложения с nodemon и ts-node .
Кроме того, вам необходимо использовать средство разрешения псевдонимов пути Typescript, как, например, tspath .
Компилятор TypeScript сможет разрешать пути, поэтому он будет компилироваться без проблем, однако вывод JavaScript не будет возможен для выполнения ни узлом, ни веб-браузером. , Почему? Причина проста!
Механизм JavaScript ничего не знает о конфигурации TypeScript времени компиляции.
Чтобы запустить код JavaScript, теперь псевдонимы путей должны быть преобразованы в относительные путиопять же, вот когда TSPath вступает в игру.
При этом, если вы хотите, чтобы все работало с nodemon , подойдет следующая конфигурация. Предварительно убедитесь, что вы установили tsconfig-paths .
npm i tsconfig-paths
Используйте это для загрузки модулей, местоположение которых указано в разделе путей tsconfig.json. Поддерживается как загрузка во время выполнения, так и через API. (...) Если вам требуется модуль tsconfig-paths / register этого пакета, он будет считывать пути из tsconfig.json и , преобразуя вызовы загрузки модуля узла в физический файл. пути , которые этот узел может загрузить.
Отлично, мы выполним node
с -r tsconfig-paths/register
для преобразования путей в физические пути к файлам и -r ts-node/register
для выполнения файлов ts на лету и nodemon перезапустит приложение после изменений.
В вашем package.json вам необходимо добавить это (изменить его при необходимости):
"nodemonConfig": {
"ignore":
[
"**/*.test.ts",
"**/*.spec.ts",
".git",
"node_modules"
],
"watch": [
"src"
],
"exec": "node -r tsconfig-paths/register -r ts-node/register ./src/server.ts",
"ext": "ts, js"
},
"scripts": {
"dev": "nodemon"
}
Обратите внимание на добавленную конфигурацию для nodemon .
И, наконец,
npm run dev
И все должно работать гладко.