Dotenv не может использовать nodejs typescript

Вопрос или проблема

У меня была проблема с конфигурацией окружения и вот мой код.

Я проконсультировался с некоторыми решениями, но все равно не могу решить проблему. Можете помочь мне?


{
 ...
  "type": "module",
  "scripts": {
    "dev": "nodemon"
  },

  "dependencies": {
    "@supabase/supabase-js": "^2.45.6",
    "body-parser": "^1.20.3",
    "dotenv": "^16.4.5",
    "express": "^4.21.1"
  },
  "devDependencies": {
    "@types/express": "^5.0.0",
    "@types/node": "^22.7.9",
    "nodemon": "^3.1.7",
    "ts-node": "^10.9.2",
    "typescript": "^5.6.3"
  }
}

tsconfig.json


{
  "compilerOptions": {

    "target": "es2016",                                  /* Установите версию языка JavaScript для скомпилированного JavaScript и включите совместимые объявления библиотек. */
    "lib": ["es6"],   
    "module": "ESNext",                             /* Укажите, какой модульный код генерируется. */
    "rootDir": "/",                                    /* Укажите корневую папку в ваших исходных файлах. */
    "moduleResolution": "node10",  
    "resolveJsonModule": true,   
   "allowJs": true,    
   "outDir": "build", 
    "esModuleInterop": true,    
   "forceConsistentCasingInFileNames": true,  
    "strict": true,                                      /* Включите все параметры строгой типизации. */
    "noImplicitAny": true, 
    "skipLibCheck": true                                 /* Пропустите проверку типов всех .d.ts файлов. */
  }

}

версия
nodejs: 21.6.1

я использую
node –env-file=.env ./ĩndex.ts

ошибка:
Ошибка: Не удается найти модуль ‘/backend/ĩndex.ts’

Вы, похоже, пытаетесь запустить файлы .ts с помощью node. Это не поддерживаемое (см. “Введение в TypeScript” на nodejs.org) расширение файла. Вам следует использовать расширения файлов .js или .mjs для Node.js.

Основное предупреждение заключается в том, что в Node@v22 есть экспериментальная поддержка .ts с использованием флага --experimental-strip-types, что документировано на 4-й странице этого раздела документации.

Ответ или решение

Проблема с исполнением TypeScript-файлов в Node.js и dotenv

Ваша проблема заключается в том, что вы пытаетесь выполнить файл TypeScript (с расширением .ts) напрямую с помощью Node.js. В стандартной конфигурации Node.js не поддерживает выполнение файлов TypeScript без предварительной компиляции его в JavaScript. Необходимы дополнительные шаги и инструменты для устранения этой проблемы. Рассмотрим это более подробно.

1. Проблема с запуском

Как вы указывали, команда для запуска вашего приложения выглядит так:

node --env-file=.env ./ĩndex.ts

Это приведет к ошибке:

Error: Cannot find module '/backend/ĩndex.ts'

Причиной этой ошибки может быть следующее:

  • Неправильный путь: Убедитесь, что файл ĩndex.ts действительно существует по указанному пути. Проверьте правильность написания имени файла и пути.
  • Поддержка расширения .ts: К сожалению, стандартная версия Node.js не может выполнить файл с расширением .ts без предварительной загрузки компилятора TypeScript для интерпретации файла.

2. Использование ts-node

Для того чтобы запускать TypeScript-файлы без предварительной компиляции в JavaScript, рекомендуется использовать библиотеку ts-node. Она позволяет выполнять файлы TypeScript прямо в Node.js среде.

Для этого нужно изменить ваш package.json, чтобы добавить команду, которая будет использовать ts-node. Вот пример, как это можно сделать:

"scripts": {
  "dev": "nodemon --exec ts-node"
}

Теперь, когда вы запускаете скрипт через Nodemon, он будет использовать ts-node для выполнения ваших TypeScript-файлов.

3. Настройка dotenv

Чтобы корректно использовать dotenv в TypeScript, убедитесь, что вы импортируете его в ваш файл index.ts (или ĩndex.ts):

import * as dotenv from 'dotenv';
dotenv.config();

Это обеспечит загрузку переменных окружения из файла .env в процессе выполнения.

4. Команда запуска

Теперь вы можете запускать приложение следующей командой:

npm run dev

Или, если вы хотите выполнить файл напрямую без Nodemon, используйте:

npx ts-node --env-file=.env ./index.ts

5. Дополнительные настройки TypeScript

Ваши настройки TypeScript в tsconfig.json выглядят достаточно хорошо. Убедитесь, что вы используете соответствующие параметры для работы с ES-модулями. Возможно, вам также потребуется установить tsconfig-paths для правильной работы с путями, если вы используете алиасы:

npm install tsconfig-paths

И добавьте в скрипты:

"start": "ts-node -r tsconfig-paths/register ./index.ts"

Заключение

Теперь ваше приложение должно корректно запускаться с использованием TypeScript и dotenv. Если у вас возникнут дополнительные вопросы или проблемы с установленными библиотеками и конфигурациями, не стесняйтесь обращаться за помощью в сообщество разработчиков. Успехов в вашей работе с TypeScript и Node.js!

Оцените материал
Добавить комментарий

Капча загружается...