Solución:
Mi suposición es que tienes un TypeormModule
configuración con un entities
propiedad que se ve así:
entities: ['src/**/*.entity.{ts,js}']
o me gusta
entities: ['../**/*.entity.{ts,js}']
El error que recibe es porque está intentando importar un ts
archivar en un js
contexto. Siempre que no esté usando el paquete web, puede usar esto en su lugar para obtener los archivos correctos
entities: [join(__dirname, '**', '*.entity.{ts,js}')]
dónde join
es importado de la path
módulo. Ahora __dirname
resolverá a src
o dist
y luego encontrar el esperado ts
o js
archivo respectivamente. avíseme si todavía hay algún problema.
EDITAR 10/01/2020
Lo anterior asume que la configuración se realiza es un archivo compatible con javascript (.js
o en el TypeormModule.forRoot()
parámetros pasados). Si está utilizando un ormconfig.json
en su lugar, deberías usar
entities: ["dist/**/*.entity.js"]
para que esté usando los archivos js compilados y no tenga la oportunidad de usar los archivos ts en su código.
En la documentación de TypeORM, encontré una sección específica para Typecript.
Esta sección dice:
Instale ts-node a nivel mundial:
npm install -g ts-node
Agregue el comando typeorm en la sección de scripts en package.json
"scripts" { ... "typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js" }
Entonces puede ejecutar el comando de esta manera:
npm run typeorm migration:run
Si necesita pasar el parámetro con el guión al script npm, deberá agregarlos después de -. Por ejemplo, si necesita generar, el comando es así:
npm run typeorm migration:generate -- -n migrationNameHere
Esto funciona con mi configuración de archivo:
{
"type": "postgres",
"host": "yourhost",
"port": 5423,
"username": "username",
"password": "password",
"database": "your_db",
"synchronize": true,
"entities": [
"src/modules/**/*.entity.{ts,js}"
],
"migrations": [
"src/migrations/**/*.{ts,js}"
],
"cli": {
"entitiesDir": "src/modules",
"migrationsDir": "src/migrations"
}
}
Luego puede ejecutar el comando generate.
Como explicó Jay McDoniel en su respuesta, el problema parece ser la coincidencia de patrones de archivos de entidad en ormconfig.json
file: Probablemente se importe un archivo mecanografiado (módulo) de un archivo javascript (presumiblemente un archivo mecanografiado previamente transpilado).
Debería ser suficiente eliminar un ts
patrón glob en el ormconfig.json
, para que TypeORM solo cargue archivos javascript. La ruta a los archivos de la entidad debe ser relativa al directorio de trabajo donde se ejecuta el nodo.
"entities" : [
"dist/entity/**/*.js"
],
"migrations" : [
"dist/migration/**/*.js"
],
"subscribers": [
"dist/subscriber/**/*.js"
],