
目前的 NestJS 项目文件夹结构
libs 中的
- admin 是管理后台的 api 集合
- app 是 app 客户端的 api 集合
- db 是 admin 和 app 共用的 Sequelize 数据库的模型,Sequelize 对象的初始化在 db 里的 db.moudle.ts(admin 和 app 都会初始化一次,感觉很不爽)
// main.js async function bootstrap () { const admin = await NestFactory.create(AdminModule) const app = await NestFactory.create(AppModule) await Promise.all([ admin.init(), app.init(), ]) await Promise.all([ admin.listen(3000), app.listen(3001), ]) } - 目前只能通过启动两个不同端口的 Nest Application 来实现这个需求(需要再用 Nginx 做 url 路径的反代)
- 有好有不好吧
- 好处是两个独立的 app 其中一个崩了也互不影响
- 不好的地方是开发时每次 reload 后两个 app 需要重新同步数据库两次,不够完美
发帖前也搜过这个需求,nestjs 的 github issue 也有类似的需求,但都被关闭了和不可用
// 需要改成这样 // main.ts async function bootstrap () { const server = express() const appFactory = new NestFactoryStatic() const app = await apiFactory.create(AppModule, new ExpressAdapter(server)) app.setGlobalPrefix('/app') await app.init() const adminFactory = new NestFactoryStatic() const admin = await adminFactory.create(AdminModule, new ExpressAdapter(server)) admin.setGlobalPrefix('/admin') await admin.init() http.createServer(server).listen(3000) } 我尝试过了,admin 会覆盖掉 app 的路由,失败
搜到一个nest-router,但最后 commit 是 12 个月前,我就没尝试
有没有 NestJS 大佬指教一下该怎么实现
nestjs 官方是不是不推荐这样弄?不然应该很容易实现的。
