模块“typeorm”没有导出成员“DataSource”和“DataSourceOptions”。

7

我在使用nest build命令构建我的nestjs应用程序时出现了错误:Module '"typeorm"' has no exported member 'DataSource'.Module '"typeorm"' has no exported member 'DataSourceOptions'.

在运行npm install之后,我使用nest build命令从命令行中构建我的nestjs应用程序,但是我收到了这些错误。

typeorm版本是"^0.2.25","@nestjs/typeorm": "^8.0.2",

无法确定发生了什么。

tsconfig.json

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "allowSyntheticDefaultImports": true,
    "target": "es2019",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./src",
    "incremental": true,
    "typeRoots": ["types", "node_modules/@types"],
    "strict": true,
    "esModuleInterop": true,
    "resolveJsonModule": true,
    "useUnknownInCatchVariables": false
  },
  "exclude": ["node_modules", "scripts", "dist"]
}

ormconfig.ts

const DATABASE_TYPE = process.env.DATABASE_TYPE || 'postgres';
const DATABASE_URL = process.env.DATABASE_URL;

const DATABASE_SSL =
  process.env.DATABASE_SSL !== undefined ? process.env.DATABASE_SSL === 'true' : true;
const DATABASE_SSL_CA = process.env.DATABASE_SSL_CA;

const root = __dirname;

export default {
  type: DATABASE_TYPE,
  url: DATABASE_URL,
  schema: 'qcxapp',
  entities: [`${root}/**/*.entity.{js,ts}`, `${root}/**/*.model.{js,ts}`],
  migrations: [`${root}/database/migrations/*.{js,ts}`],
  synchronize: false,
  cli: {
    migrationsDir: `${root}/database/migrations`,
  },
  seeds: [`${root}/**/*.seed.{js,ts}`],
  factories: [`${root}/**/*.factory.{js,ts}`],
  keepConnectionAlive: true,
  ssl: DATABASE_SSL_CA ? { ca: DATABASE_SSL_CA, rejectUnauthorized: false } : DATABASE_SSL,
};

展示你的 tsconfig.json 文件。 - Dave Meehan
@DaveMeehan 我已经更新了问题并添加了tsconfig.json。 - JN_newbie
你能展示一下你的ORM配置吗? - n1md7
1
据我所知,DataSource 是在 v0.3 版本中引入的。您确定安装的 TypeORM 版本一定是 v0.2.25 吗? - n1md7
@n1md7 我已经检查了 package-lock.json 文件,安装的版本是 0.2.25。 - JN_newbie
显示剩余3条评论
3个回答

6

我通过指定固定的软件包版本来解决了这个错误:

"@nestjs/typeorm": "8.0.2",
"typeorm": "0.2.45",

这应该是 typeorm 而不是 typeform 吗? - LMabley
应该是 TypeORM,错别字已经修正,抱歉。 - ks0d4r

2

我通过删除typeorm,然后重新添加来解决了这个问题。使用以下命令:

yarn remove typeorm 

稍后。
yarn add typeorm
```

1

如果不是8.0.2版本,nest i(服务器上为npx nest i)会寻找typeorm版本。

yarn remove @nestjs/typeorm 

那么

yarn add @nestjs/typeorm@8.0.2

然后使用 nest i 命令(对于服务器使用 npx nest i)再次检查嵌套信息,如果使用的 TypeORM 版本为 8.0.2,则问题应该会消失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接