mid-way框架,使用sequelize访问数据库,dev模式正常,build之后,所有数据访问全部报错,错误信息类似于 Model not initialized: Member "访问数据库的sequelize函数名" cannot be called. "定义的sequelize数据Model实例名" needs to be added to a Sequelize instance.
解决方案:
sequelize的配置参数中,有一项是 modelPaths ,该参数设置sequlize的model文件的路径,该设置使用通配符匹配项目的model文件,在dev(开发模式)配置中,该配置是 [__dirname +
(ps:modelPaths 的这种写法不是官方文档推荐的写法,官方直接指定model路径,不带文件后缀,会自动处理,不会出现这个问题。)
原理分析:
我用的midway框架是TypeScript,dev模式运行的是TypeScript文件(model文件后缀是ts),但是build之后,TypeScript会编译成JavaScript(model文件后缀是js),所以配置项如果不更改,build模式会找不到 ts后缀的文件,引发上述错误。