midway Model not initialized ... needs to be added to a Sequelize instance.

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 + /**.model.ts],__dirname=获得当前执行文件所在目录的完整目录名,这个是Node.js自带的,我的sequelize配置文件和model文件在同一个目录下,所以这么写。这个配置项在build模式下需要修改为[__dirname + /**.model.js]
(ps:modelPaths 的这种写法不是官方文档推荐的写法,官方直接指定model路径,不带文件后缀,会自动处理,不会出现这个问题。)

原理分析:
我用的midway框架是TypeScript,dev模式运行的是TypeScript文件(model文件后缀是ts),但是build之后,TypeScript会编译成JavaScript(model文件后缀是js),所以配置项如果不更改,build模式会找不到 ts后缀的文件,引发上述错误。

你可能感兴趣的:(midway Model not initialized ... needs to be added to a Sequelize instance.)