Я изо всех сил пытаюсь найти конфигурацию, которая работает для TypeORM в проекте TypeScript во всех средах.
Например, начиная с этого ormconfig.js
:
var dotenv = require("dotenv")
dotenv.config()
var connectionOptions = [
{
"name": "default",
"type": "postgres",
"url": process.env.DATABASE_URL,
},
{
"name": "testing",
"type": "postgres",
"url": `${process.env.DATABASE_URL}_test`,
}];
module.exports = connectionOptions
Но тогда , когда я пытаюсь запустить приложение, я получаю эту ошибку:
No repository for "User" was found. Looks like this entity is not registered in current "default" connection?
Итак, я добавляю объекты в конфигурацию:
var dotenv = require("dotenv")
dotenv.config()
var connectionOptions = [
{
"name": "default",
"type": "postgres",
"url": process.env.DATABASE_URL,
"entities": ["src/entity/**/*"],
},
{
"name": "testing",
"type": "postgres",
"url": `${process.env.DATABASE_URL}_test`, // TODO: fix
"entities": ["src/entity/**/*"],
}];
module.exports = connectionOptions
На этом этапе приложение запускается в dev (ts-node-dev src/main.ts
) работает. Но когда я компилирую его и пытаюсь запустить JavaScript, я получаю эту ошибку:
C:\Users\pupeno\Documents\Flexpoint Tech\js\exp7\backend\src\entity\User.ts:1
import {BaseEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn} from "typeorm"
^^^^^^
SyntaxError: Cannot use import statement outside a module
Он пытается загрузить исходный файл User.ts
вместо скомпилированного User.js
.
Я запускаю свое приложение в продукте, запустив node build/src/main.js
, проблема в том, что ormconfig.js
все еще находится на верхнем уровне, печать __dirname
и __filename
показывает:
C:\Users\pupeno\Documents\Flexpoint Tech\js\exp7\backend
C:\Users\pupeno\Documents\Flexpoint Tech\js\exp7\backend\ormconfig.js
Как вы должны настроить TypeORM для работы как в разработке, так и в производстве?
Переименование моей сущности в User.entity.ts
и установка сущностей следующим образом:
var dotenv = require("dotenv")
dotenv.config()
var connectionOptions = [
{
"name": "default",
"type": "postgres",
"url": process.env.DATABASE_URL,
"entities": [__dirname + '/**/*.entity{.ts,.js}'],
},
{
"name": "testing",
"type": "postgres",
"url": `${process.env.DATABASE_URL}_test`, // TODO: fix
"entities": [__dirname + '/**/*.entity{.ts,.js}'],
}];
console.log(connectionOptions)
module.exports = connectionOptions
вызывает ту же ошибку, поскольку Node пытается загрузить файл TypeScript:
(node:19344) UnhandledPromiseRejectionWarning: C:\Users\pupeno\Documents\Flexpoint Tech\js\exp7\backend\src\entity\User.entity.ts:1
import {BaseEntity, Column, CreateDateColumn, Entity, PrimaryGeneratedColumn, UpdateDateColumn} from "typeorm"
^^^^^^
SyntaxError: Cannot use import statement outside a module