美文网首页
midway Model not initialized ...

midway Model not initialized ...

作者: DaFengS | 来源:发表于2019-07-29 21:57 被阅读0次

    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 ...

          本文链接:https://www.haomeiwen.com/subject/hlxwrctx.html