You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sequelize+TypeScript+Express:模型创建与迁移配置问题咨询

问题二:迁移时提示“File: 20180424170257-create-todo.ts does not match pattern: /.js$/”,如何指定编译后的迁移文件?

这个错误是因为Sequelize CLI默认只识别.js格式的迁移文件,但你编写的是.ts文件。这里提供两种靠谱的解决思路,你可以根据项目流程选择:

方案一:让Sequelize CLI直接支持TS迁移文件(无需预编译)

这种方案适合不想每次迁移都先编译TS的场景,核心是用ts-node让CLI直接运行TS文件:

  1. 先安装必要的开发依赖:
    npm install --save-dev ts-node typescript @types/node
    
  2. 新建或修改项目根目录的.sequelizerc配置文件,指定迁移文件后缀为.ts,并让CLI使用ts-node执行:
    const path = require('path');
    
    module.exports = {
      config: path.resolve('src', 'config', 'config.ts'),
      'models-path': path.resolve('src', 'models'),
      'seeders-path': path.resolve('src', 'seeders'),
      'migrations-path': path.resolve('src', 'migrations'),
      'migration-file-ext': '.ts', // 指定迁移文件后缀
      'cli-path': 'node_modules/ts-node/dist/bin.js' // 用ts-node执行TS文件
    };
    
  3. 之后直接执行迁移命令即可,CLI会自动处理TS文件:
    npx sequelize-cli db:migrate
    

方案二:预编译TS到JS,让Sequelize使用编译后的迁移文件

如果你的项目本来就有TS编译流程(比如把TS编译到dist目录),可以让Sequelize指向编译后的JS迁移文件:

  1. 确保tsconfig.json配置了正确的输出目录,比如:
    {
      "compilerOptions": {
        "outDir": "./dist",
        "rootDir": "./src",
        "target": "ES2020",
        "module": "CommonJS",
        // 其他必要配置...
      },
      "include": ["src/**/*"]
    }
    
  2. 修改.sequelizerc,把迁移、模型等路径指向编译后的dist目录:
    const path = require('path');
    
    module.exports = {
      config: path.resolve('dist', 'config', 'config.js'),
      'models-path': path.resolve('dist', 'models'),
      'seeders-path': path.resolve('dist', 'seeders'),
      'migrations-path': path.resolve('dist', 'migrations'),
    };
    
  3. 先执行TS编译:
    tsc
    
  4. 再运行迁移命令:
    npx sequelize-cli db:migrate
    

另外,如果你用CLI生成迁移文件,记得加上--extension ts参数,直接生成TS格式的迁移文件:

npx sequelize-cli migration:generate --name create-todo --extension ts

内容的提问来源于stack exchange,提问作者Freweini Beyene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:33:44