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后缀的文件,引发上述错误。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • TypeScript 是微软开发和控制的开源项目,我在应用 Anguar 2+ 和 Ionic 2+ 框架开发系统...
    廖全磊LesterLiao阅读 5,614评论 0 3
  • 33、JS中的本地存储 把一些信息存储在当前浏览器指定域下的某一个地方(存储到物理硬盘中)1、不能跨浏览器传输:在...
    萌妹撒阅读 6,404评论 0 2
  • 全局安装webpack 全局安装webpack会有个问题,就是当你有两个项目依赖于不同版本的webpack,就会有...
    説好的妹紙呢阅读 5,859评论 0 11
  • 本文系原创,转载请附带作者信息:yhlben项目地址:https://github.com/yhlben/cdfa...
    孟思行阅读 4,957评论 0 2
  • 妞妞第一天上幼儿园,自己背的书包去,回来也是。接她放学见到我时说:妈妈,伊伊上学长大了。是的,我家妞妞长大...
    郑清文阅读 1,001评论 6 3