Pla*_*fYT 8 node.js typescript typeorm discord.js typeorm-activerecord
我有我的(打字稿)项目(如果这很重要,它是一个不和谐的机器人),其中包含一个“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/"
}
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我在实际服务器上运行任何内容,配置通常会起作用。实体已正确加载,我可以按预期使用它们。现在我对实体进行了一些更改,这意味着我必须进行迁移。尝试生成迁移导致实际问题出现。
我尝试运行以下命令:
npm run typeorm migration:show -- -d .\ormconfig.json
Run Code Online (Sandbox Code Playgroud)
我期望它加载配置,连接到服务器,检查数据库并给我输出。然而,当它加载时,它只是抛出一个错误,说
Given data source file must contain export of a DataSource instance
我也尝试通过 javascript 执行此操作,但是当我导出“DataSource”实例时,我收到类似的错误:
Invalid file path given: "C:\temp\Bot\src\database.ts". File must contain a TypeScript / JavaScript code and export a DataSource instance.
下面还有我的 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"
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您正在使用 Typeorm 的较新版本之一,其中他们放弃了对ormconfig.{json,xml}文件的支持。您必须{ts,js}使用数据源将数据库连接选项放入文件中并将其导出。
解决您的问题的两个选项:
0.2.45:npm i typeorm@0.2.45;如果需要,我可以通过编辑此答案来帮助您进行设置,只需在下面评论即可。
创建一个名为“data-source.ts”的文件
import { DataSource } from 'typeorm';
export const AppDataSource = new DataSource({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'user',
password: 'pass',
database: 'db_name',
entities: [],
migrations: [],
subscribers: [],
});
Run Code Online (Sandbox Code Playgroud)
然后运行
npm run typeorm 迁移:show -- -d "path/data-source.ts"
| 归档时间: |
|
| 查看次数: |
17188 次 |
| 最近记录: |