TypeScript некорректно компилируется в commonjs / es2015 - PullRequest
1 голос
/ 09 июля 2020

Я использую Node v14.5.0. Я использую ts-node-dev в среде разработки

Попытка скомпилировать JS всегда выдает ошибку.

Сначала я пробовал с этим tsconfig:

"target": "es5",
"module": "commonjs"
"outDir": "./dist",
"rootDir": "./src"

Но когда я запускаю tsc и node dist/app.js, я получаю следующую ошибку:

UnhandledPromiseRejectionWarning: D:\Dev\src\entity\BaseEntity.ts:1
import {
^^^^^^

SyntaxError: Cannot use import statement outside a module

Проведя небольшое исследование, я обнаружил, что я должен сказать Node использовать модули, добавляя "type": "module" к package.json. После этого ошибка изменилась на:

Object.defineProperty(exports, "__esModule", { value: true });
                      ^

ReferenceError: exports is not defined

Выполняя дополнительные исследования, я пробовал несколько разных вещей, например:

  • Изменение tsconfig с "module": "commonjs" на "module": "es2015"

    Это также приводит к невозможности запуска ts-node-dev. Выдает ошибку: Cannot use import statement outside a module.

  • Добавление к tsconfig "moduleResolution": "node"

    С этим и модулем "es2015" tsconfig мне требуется во всех моих машинописный импорт для использования расширения. JS. Пример: import { foo } from '../bar.js, иначе выдает ошибку, например: Error [ERR_MODULE_NOT_FOUND]: Cannot find module D:/.... И, конечно же, не позволяет мне использовать ts-node-dev, поскольку вызывает ошибку, описанную выше.

1 Ответ

1 голос
/ 23 июля 2020

Проблема была в ormconfig.js, где путь моих объектов указывал на файл .ts вместо .js.

Решение:

entities: ['dist/entity/*.js'],
migrations: ['dist/migration/**/*.js']
...