Проблема при парсинге конфига с Typescript@>=4.7
Closed this issue · 9 comments
Описание проблемы:
При запуске проекта возникает критическая ошибка при сборке во время парсинга файла конфига (с использованием npm-пакета 'config').
Воспроизводится при следующих зависимостях:
arui-scripts@14.0.0
NodeJS 16.16.0
typescript@4.8.2
Возможное решение:
Проблема решается апгрейдом версии ts-node и ts-loader? (мне хватило только ts-node, но пишут что второе тоже нужно).
Достаточные версии пакетов для корректной работы:
"ts-loader": "9.4.2",
"ts-node": "10.9.1"
Проблему так же решает даунгрейд версии TS до версии ниже 4.7, но это как решение, на мой взгляд, не стоит рассматривать
Актуальные ссылки:
https://stackoverflow.com/questions/72488958/false-expression-non-string-value-passed-to-ts-resolvetypereferencedirective
Привет! С конфигом ты работаешь в рантайме на стороне сервера, при помощи ts-node, почему сложилось впечатление что проблема в arui-scripts?
Привет
Проблема в версии ts-node, которая идет в зависимостях скрипта. Чтобы все работало с последними версиями ТС нужно самостоятельно устанавливать более новую версию ts-node. Понимаю, что использование одной библиотеки (config) не обосновывает апдейт зависимости библиотеки, но это флаг, что похожие проблемы могут возникнуть при работе с другими пакетами.
Понял, попробую разобраться
Есть какие-то апдейты?
Привет! Сори за долгое ожидание, мне не удалось воспроизвести проблему, можем как-то связаться, чтобы ты написал название проекта и шаги для воспроизведения?
@me_rinta в телеге
давай там спишемся
Привет!
Удалось воспроизвести проблему, но, в дополнение к моему сообщению выше - не устанавливая ts-node, ты его используешь как транзитивную зависимость из arui-scripts. Если ты хочешь использовать node-config вместе с typescript, все таки тебе нужно поставить ts-node в свой проект. В качестве обходного пути без установки ts-node ты можешь добавить флаг «transpileOnly» в твой tsconfig.json:
{
…,
"extends": …,
"include": …,
…,
"ts-node": {
"transpileOnly": true,
},
…,
}
Это избавит тебя от ошибки, используя транзитивный ts-node@9.1.1 (проверка типов через ts-node по большей части не нужна из за проверки в ide + fork-ts-checker-webpack-plugin). Но если в какой то момент в arui-scripts откажутся от ts-node, то все равно придется тянуть в его в проект, или переехать на https://github.com/tusharmath/node-config-ts
Привет
Проблему мою, судя по твоим комментариям, действительно стоит решать установкой отдельной версии, которая нужна именно мне, не опираясь на версию из arui-scripts, но я тогда не очень понимаю тогда зачем на данный момент ts-node в проекте используется и почему его нельзя апгрейднуть (какие в этом минусы и есть ли они)
ts-node
используется для парсинга конфигов и текущая версия справляется со своими задачами. Будет неправильно обновлять ts-node
в arui-scripts
ради того, чтобы в конечном проекте какой-то другой пакет (node-config
), в котором не прописана эта зависимость, смог использовать корректную версию. По сути проблему стоит рассматривать в отрыве от arui-scripts
. Есть пакет, который требует наличия ts-node
, но сам никоим образом эту зависимость не ставит. Соответственно, нужно поставить её себе в проект.