如何在Express项目中使用TypeORM 0.3.16生成迁移文件
解决TypeORM 0.3.x在Express中生成迁移文件的报错问题
针对你遇到的Cannot use import statement outside a module错误,本质是TypeORM CLI默认尝试读取编译后的JS文件,但你的数据源配置是TS文件且未提前编译,同时缺少TS文件的运行环境支持。以下是具体解决步骤:
1. 安装必要依赖
确保项目已安装ts-node和typescript(用于直接运行TS文件),如果未安装,执行:
npm install --save-dev ts-node typescript
如果需要加载环境变量(你的配置中用到了process.env),还需安装dotenv:
npm install dotenv
2. 配置tsconfig.json
确保你的tsconfig.json包含TypeORM所需的装饰器支持,关键配置如下:
{ "compilerOptions": { "target": "ES6", "module": "CommonJS", "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "emitDecoratorMetadata": true, "experimentalDecorators": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"] }
其中emitDecoratorMetadata和experimentalDecorators必须设为true,否则TypeORM无法识别实体装饰器。
3. 修改迁移生成脚本
在package.json中更新migration:generate脚本,用ts-node直接执行TypeORM的CLI工具,同时指定正确的路径:
"scripts": { "migration:generate": "ts-node -r dotenv/config ./node_modules/typeorm/cli.js migration:generate src/migration/PostRefactoring -d src/config/db.ts" }
-r dotenv/config:用于加载.env文件中的环境变量(如果不需要可以去掉)src/migration/PostRefactoring:指定迁移文件生成的路径和名称,确保src/migration目录存在(不存在则手动创建)-d src/config/db.ts:指定数据源配置文件的TS路径
4. 调整数据源配置(可选)
检查db.ts中的migrations路径,避免相对路径出错,建议改为基于项目根目录的相对路径:
migrations: ["src/migration/**/*.ts"],
5. 运行生成命令
执行以下命令开始生成迁移文件:
npm run migration:generate
执行成功后,src/migration目录下会生成包含Brand实体结构的迁移文件,后续可通过typeorm migration:run命令执行迁移。
内容的提问来源于stack exchange,提问作者Mehdi Faraji
相关产品推荐
相关产品推荐

