Приложение nodejs выбрасывает неожиданный токен в машинописные файлы в зависимости - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть приложение nodejs, в котором я представляю TypeORM для уровня хранилища.
Я боролся уже несколько дней с неожиданными ошибками токенов в зависимостях node_modules.

Чтобы отследить основную причину, я создал очень простое приложение на основе примера приложения, описанного в документации TypeORM. Я добавил dotenv в качестве зависимости и очень простого файла среды, и я действительно получаю сообщение об ошибке в ... / dotenv / types / test.ts в тот момент, когда пытаюсь подключиться к БД с помощью TypeORM. Я понятия не имею, почему приложение пытается проанализировать этот файл.

Я попытался запустить приложение с помощью ts-node, а также скомпилировать код с помощью tsc и запустить приложение напрямую. Тот же результат. Я также попробовал несколько целей в tsconfig.json и попытался запустить проект с помощью esm. Пока не повезло.

Я, должно быть, делаю что-то не так, и я надеюсь, что кто-то здесь может указать, что это такое. Я добавил базовое приложение, которое выдает ошибку в github repo

Вот ошибка:

/Users/quintmouthaan/projects/weareeves/eves-api/node_modules/dotenv/types/test.ts:1
(function (exports, require, module, __filename, __dirname) { import { config, parse } from "dotenv";
                                                                     ^
SyntaxError: Unexpected token {
    at new Script (vm.js:83:7)
    at createScript (vm.js:267:10)
    at Object.runInThisContext (vm.js:319:10)
    at Module._compile (internal/modules/cjs/loader.js:685:28)
    at Module._extensions..js (internal/modules/cjs/loader.js:733:10)
    at Object.require.extensions.(anonymous function) [as .ts] (/Users/quintmouthaan/projects/prj/api/node_modules/ts-node/src/index.ts:384:14)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Module.require (internal/modules/cjs/loader.js:658:17)

А вот мой файл tsconfig.json:

{
   "compilerOptions": {
      "lib": [
         "es5",
         "es6"
      ],
      "target": "es5",
      "module": "commonjs",
      "moduleResolution": "node",
      "outDir": "./build",
      "emitDecoratorMetadata": true,
      "experimentalDecorators": true,
      "sourceMap": true,
      "allowJs": true
   }
}

и файл ormconfig.json:

{
   "type": "postgres",
   "host": "localhost",
   "port": 5432,
   "username": "postgres",
   "password": "",
   "database": "db",
   "synchronize": true,
   "logging": false,
   "entities": [
      "src/entity/**/*.ts"
   ],
   "migrations": [
      "src/migration/**/*.ts"
   ],
   "subscribers": [
      "src/subscriber/**/*.ts"
   ],
   "cli": {
      "entitiesDir": "src/entity",
      "migrationsDir": "src/migration",
      "subscribersDir": "src/subscriber"
   }
}

и, наконец, файл package.json:

{
   "name": "TestTypeORM",
   "version": "0.0.1",
   "description": "Awesome project developed with TypeORM.",
   "devDependencies": {
      "ts-node": "3.3.0",
      "@types/node": "^8.0.29",
      "typescript": "3.3.3333"
   },
   "dependencies": {
      "dotenv": "^8.2.0",
      "pg": "^7.3.0",
      "reflect-metadata": "^0.1.10",
      "typeorm": "0.2.20"
   },
   "scripts": {
      "start": "ts-node src/index.ts"
   }
}

1 Ответ

0 голосов
/ 11 ноября 2019

Хорошо, я понял это. Это была действительно глупая ошибка.

Я установил переменную env TYPEORM_ENTITIES = ** / *. Ts Из-за этого TypeORM искал сущности во всех фодерах, включая node_modules, и это вызывало ошибки при соединении.

Я потратил слишком много времени на это, поэтому надеюсь, что это поможет кому-то еще в будущем: -).

...