Typeorm 和 Typescript EntityMetadataNotFoundError 编译 Javascript 文件

Typeorm & Typescript EntityMetadataNotFoundError On Compiled Javascript Files

我正在尝试使用 typescript 使用 nodejs & express & typeorm 构建后端。 我有一个问题,当我 运行 使用 nodemon 应用程序时,它按预期工作。但是,当我从 node app.js 开始编译 javascript 文件并将请求发送到任何端点时,它会给我错误 EntityMetadataNotFoundError。我怎样才能通过这个问题?

ormconfig.json

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

我不知道是否需要,但这里是 tsconfig.json

{
   "compilerOptions": {
      "lib": [
         "es5",
         "es6",
         "es7",
         "es2015",
         "es2016",
         "es2017",
         "es2018",
         "esnext"
      ],
      "target": "es5",
      "module": "commonjs",
      "moduleResolution": "Node",
      "outDir": "dist",
      "sourceMap": true,
      "experimentalDecorators": true,
      "emitDecoratorMetadata": true
   }
}

我的构建脚本是 tsc --project .

感谢任何帮助,谢谢。

好的,我知道了。 tsc --project . 命令未将 ormconfig.json 文件复制到 dist 目录。我改变了 tsconfig.json 现在可以使用了!

我添加了 includeresolveJsonModule 属性。

tsconfig.json

{
   "compilerOptions": {
      "lib": [
         "es5",
         "es6",
         "es7",
         "es2015",
         "es2016",
         "es2017",
         "es2018",
         "esnext"
      ],
      "target": "es5",
      "module": "commonjs",
      "moduleResolution": "Node",
      "resolveJsonModule": true,
      "outDir": "dist",
      "sourceMap": true,
      "experimentalDecorators": true,
      "emitDecoratorMetadata": true
   },
   "include": [
      "ormconfig.json"
   ]
}

我 运行 遇到了与 typeorm:"0.35" 相同的问题,它不再使用 ormconfig.json。

在我的例子中,解决方案是将路径添加到构建文件夹中的实体,例如这个“entities: ["build/entity/*.js"]" 而不是开发路径 "entities: ["src/entity/*.ts"]" 注意 js 与 ts,以及构建与 src。