我在expressjs上有这个项目,我使用typeorm和typescript。问题是当我在开发模式下运行项目时(使用app.ts),第一个请求时我得到错误:
node_modules/src/data-source/DataSource.ts:427
if (!metadata) throw new EntityMetadataNotFoundError(target)
^
EntityMetadataNotFoundError: No metadata for "user" was found.
但是当我从/dist/app. js启动项目时一切都正常。
我在tsconfig中使用es 2020作为目标,使用nodeNext作为模块,使用moduleResolution。这是我的package.json文件:`
"type": "module",
"scripts": {
"start": "tsc -p . && node dist/app.js",
"start:prod": "node dist/app.js",
"dev": "ts-node-esm app.ts --watch",
"test": "mocha -r ts-node/register src/**/*.ts",
"test-dev": "nodemon --watch . --ext ts --exec \"mocha -r ts-node/register src/**/*.ts\"",
"build": "rimraf dist && tsc -p .",
}
'
这是我typorm.config.ts文件:
`
config();
const baseDir = 'dist/src';
export const appDataSource = new DataSource({
type: 'postgres',
host: process.env.POSTGRES_DB_HOST,
port: Number(process.env.POSTGRES_DB_PORT),
username: process.env.POSTGRES_DB_USER,
password: process.env.POSTGRES_DB_PASSWORD,
database: process.env.POSTGRES_DB_DATABASE,
synchronize: false,
logging: true,
entities: [baseDir + '/**/entity/*.entity.js'],
migrationsRun: true,
migrations: [baseDir + '/migrations/*.js'],
});
`
我尝试将.ts添加到实体和迁移路径中。
1条答案
按热度按时间sf6xfgos1#
要在生产模式下运行代码,我必须添加“type”:“module”添加到我的package.json文件中,并且在我的tsconfig文件中进行了一些更改。但是在开发模式下,我遇到了这个错误。显然,由于某些原因,我的typeorm.config文件中的.ts扩展名无法被识别。因此,我不得不在我的typeorm.config文件中使用单独的实体和迁移路径。这似乎暂时解决了我的问题。