node.js - TypeORM 无法将 cli 与配置一起使用

标签 node.js typescript discord.js typeorm typeorm-activerecord

我有我的( typescript )项目(如果这很重要,它是一个不和谐的机器人),其中包含一个“ormconfig.json”文件。此文件包含我对 TypeORM 的配置,如下所示:

{
    "type": "mysql",
    "host": "<IP of my server>",
    "port": 3306,
    "username": "<MySQL User>",
    "password": "<MySQL Password>",
    "database": "<existing MySQL database>",
    "synchronize": true,
    "logging": false,
    "entities": [
        "src/entities/*.ts"
    ],
    "migrations": [
        "src/migration/*.ts"
    ],
    "subscribers": [
        "src/subscriber/*.ts"
    ],
    "cli": {
        "entitiesDir": "src/entities/",
        "migrationsDir": "src/migration/",
        "subscribersDir": "src/subscriber/"
    }
}

现在,如果我在我的实际服务器上运行任何东西,一般的配置都可以工作。实体被正确加载,我可以按预期使用它们。现在我在实体中做了一些更改,这意味着我必须进行迁移。尝试生成迁移使实际问题出现。

我尝试运行以下命令:

npm run typeorm migration:show -- -d .\ormconfig.json

我希望这会加载配置、连接到服务器、检查数据库并给我输出。然而,当它加载时,它只是抛出一个错误,说

给定的数据源文件必须包含 DataSource 实例的导出

我也尝试通过 javascript 进行操作,但是当我导出“DataSource”-Instance 时,我收到类似的错误:

给定的文件路径无效:“C:\temp\Bot\src\database.ts”。文件必须包含 TypeScript/JavaScript 代码并导出 DataSource 实例。

下面也是我的 package.json 文件,用于项目的依赖项。

{
  "name": "Bot",
  "version": "1.1.1",
  "description": "desc",
  "main": "index.ts",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "serve": "npx ts-node src/index.ts",
    "start": "npx ts-node src/index.ts",
    "typeorm": "npx --require ts-node/register ./node_modules/typeorm/cli.js",
  },
  "author": "PlayWolfYT",
  "license": "ISC",
  "dependencies": {
    "@discordjs/builders": "^0.12.0",
    "@discordjs/rest": "^0.3.0",
    "@types/nodemailer": "^6.4.4",
    "dayjs": "^1.10.8",
    "discord-api-types": "^0.27.0",
    "discord.js": "^13.6.0",
    "mysql2": "^2.3.3",
    "nodemailer": "^6.7.2",
    "nodemon": "2.0.15",
    "reflect-metadata": "^0.1.13",
    "ts-node": "^10.5.0",
    "typeorm": "^0.3.3",
    "typescript": "^4.6.2"
  },
  "devDependencies": {
    "@types/node": "^17.0.21",
    "@discordjs/builders": "^0.12.0",
    "@discordjs/rest": "^0.3.0"
  }
}

最佳答案

因此,您使用的是 Typeorm 的较新版本之一,他们在其中放弃了对 ormconfig.{json,xml} 文件的支持。您必须使用 Data Source 将数据库连接选项放入 {ts,js} 文件中并将其导出。

解决您的问题的两个选项:

  • 将你的 typeorm 降级到 0.2.45:npm i typeorm@0.2.45;
  • 按照新文档更新您的代码:Typeorm docs ;

如果需要,我可以通过编辑此答案来帮助您进行设置,只需在下方评论即可。

关于node.js - TypeORM 无法将 cli 与配置一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71602046/

相关文章:

node.js - 如何将 Selenium NodeJS Web 应用程序部署到 Heroku?

node.js - React.js 与 Express : Render a simple component on the client-side while using Express as a server?

node.js - 在数组内的 mongodb 和 nodejs 中不区分大小写的搜索

unit-testing - Angular 2 TestBed,没有依赖注入(inject)的模拟方法

node.js - Typescript + webpack(带热重载)+ NodeJS

javascript - Typescript:如何在全局范围内进行一些导入?

node.js - Discord Bot 数据库 (JAVASCRIPT)

javascript - 更新角色一次仅允许用户使用一个角色

javascript - 如何使不和谐机器人正确自动大写字符串的第一个字母?正则表达式

reactjs - React-Table:在组件 ref 上调用 'getResolvedState()' 抛出异常