我正试图通过nrwl/nx创建一个单回购项目。我遵循了nx网站上的教程,并完成了以下步骤:
-
创建一个空的工作区
npx create-nx-workspace
-
创建一个名为前端的角度应用程序
nx g @nrwl/angular:application
-
创建名为backend 的嵌套应用程序
nx g @nrwl/nest:application frontend
我想在后端和前端之间共享所有模型接口,所以我用命令创建了一个库:
`nx g @nrwl/workspace:lib data`
我在后端应用程序的数据库中使用了一个定义的模型接口,并使用@projectName/data导入,我可以构建和运行后端。
导致问题的类型定义是:
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
export type AgentDocument = Agent & Document;
@Schema()
export class Agent{
@Prop()
name : string
@Prop()
imgUrl : string;
}
export const AgentSchema = SchemaFactory.createForClass(Agent);
经过测试,是@nestjs/mongoose的导入导致了构建时前端的错误。
我可以告诉前端在导入模型时忽略此导入吗?
我终于找到了答案,
这个问题来自于装饰师用来为猫鼬定义shema。
装饰师不兼容前面的lib共享。
这里描述了一种变通方法:
https://github.com/nrwl/nx/issues/3322
但是,由于我的模型定义中使用了SchemaFactory对象,所以它不能完全与mongoose一起工作。
相反,我重写了我的模型,删除了这样的装饰器:
import * as mongoose from 'mongoose';
export interface Agent {
name : string,
imgUrl : string,
}
export const AgentSchema = new mongoose.Schema({
name : String,
imgUrl : String,
})
export type AgentDocument = Agent & Document;