Я использую TypeORM с Babel 7 и Typescript, и кажется, что метаданные отсутствуют в скомпилированном коде. Можно ли что-то с этим сделать или это ограничение использования Бабеля?
Ошибка
ColumnTypeUndefinedError: Тип столбца для фотографии # isPublished is not
определены и не могут быть угаданы. Убедитесь, что вы включили
"emitDecoratorMetadata": истинная опция в tsconfig.json. Также убедитесь, что
Вы импортировали «отражать-метаданные» поверх основного файла ввода в
ваше приложение (до того, как какой-либо объект импортирован). Если вы используете
JavaScript вместо TypeScript вы должны явно указать столбец
тип.
at new ColumnTypeUndefinedError
Photo.js
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'
@Entity()
export class Photo {
@PrimaryGeneratedColumn()
id: number
@Column()
isPublished: boolean
}
код нормы
import 'reflect-metadata'
import {createConnection} from 'typeorm'
import {Photo} from './entities/Photo'
createConnection({
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'postgres',
password: 'root',
database: 'test',
entities: [
Photo
],
synchronize: true,
logging: false
}).then(connection => {
// here you can start to work with your entities
}).catch(error => console.log(error))
package.json
{
"name": "typescript-babel-node",
"version": "0.1.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "run-p -r dev:run type-check:watch",
"dev:run": "nodemon --exec babel-node --extensions '.ts,.js' src/index.js",
"build": "babel src -d build --extensions '.ts,.js' src/index.js",
"start": "node build/index.js",
"type-check:watch": "tsc --watch",
"test": "jest --watch"
},
"author": "",
"license": "ISC",
"dependencies": {
"@types/node": "^10.12.0",
"express": "^4.16.4",
"pg": "^7.6.0",
"ramda": "^0.25.0",
"reflect-metadata": "^0.1.12",
"typeorm": "^0.2.8"
},
"devDependencies": {
"@babel/cli": "^7.1.2",
"@babel/core": "^7.1.2",
"@babel/node": "^7.0.0",
"@babel/plugin-proposal-class-properties": "^7.1.0",
"@babel/plugin-proposal-decorators": "^7.1.2",
"@babel/plugin-proposal-object-rest-spread": "^7.0.0",
"@babel/plugin-syntax-import-meta": "^7.0.0",
"@babel/preset-env": "^7.1.0",
"@babel/preset-typescript": "^7.1.0",
"@types/express": "^4.16.0",
"@types/jest": "^23.3.7",
"@types/ramda": "^0.25.39",
"babel-core": "^7.0.0-bridge.0",
"babel-jest": "^23.6.0",
"babel-plugin-module-resolver": "^3.1.1",
"dot-env": "0.0.1",
"eslint": "^5.7.0",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-import": "^2.14.0",
"eslint-plugin-node": "^7.0.1",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-standard": "^4.0.0",
"jest": "^23.6.0",
"nodemon": "^1.18.5",
"npm-run-all": "^4.1.3",
"regenerator-runtime": "^0.12.1",
"source-map-loader": "^0.2.4",
"ts-jest": "^23.10.4",
"typescript": "^3.1.3",
"webpack": "^4.23.0",
"webpack-cli": "^3.1.2"
}
}