我有一个名为common的共享库,在我的共享库中我有index.ts:
export * from './errors/bad-request-error';
export * from './errors/custom-error';
export * from './errors/data-base-connection-error';
export * from './errors/not-authorized-error';
export * from './errors/not-found-error';
export * from './errors/request-validation-error';
export * from './middlewares/current-user';
export * from './middlewares/error-handler';
export * from './middlewares/require-auth';
export * from './middlewares/validate-request';
export * from './events/base-listener';
export * from './events/base-publisher';
export * from './events/subjects';
export * from './events/ticket-created-event';
export * from './events/ticket-updated-event';
export * from './events/types/order-status';
export * from './events/order-created-event';
export * from './events/order-cancelled-event';
在“./events/types/order-status”中有:
export declare enum OrderStatus {
Created = 'created',
Cancelled = 'cancelled',
AwaitingPayment = 'awaiting:payment',
Complete = 'complete'
}
我将此包导入到另一个项目中,在该项目中我有订单模型:
import mongoose from "mongoose";
import { TicketDoc } from "./ticket";
import { OrderStatus } from '@inbaltickets/common'
export { OrderStatus };
interface OrderAttrs {
userId: string;
status: OrderStatus;
expiresAt: Date;
ticket: TicketDoc;
}
interface OrderDoc extends mongoose.Document{
userId: string;
status: OrderStatus;
expiresAt: Date;
ticket: TicketDoc;
}
interface OrderModel extends mongoose.Model<OrderDoc>{
build(attrs: OrderAttrs): OrderDoc;
}
const orderSchema = new mongoose.Schema({
userId:{
type: String,
required: true
},
status:{
type: String,
required: true,
enum: Object.values(OrderStatus),
default: OrderStatus.Created
},
expiresAt:{
type: mongoose.Schema.Types.Date
},
ticket:{
type: mongoose.Schema.Types.ObjectId,
ref: 'Ticket'
}
},{
toJSON: {
transform(doc, ret) {
ret.id = ret._id;
delete ret._id;
}
}
});
orderSchema.statics.build = (attrs: OrderAttrs) => {
return new Order(attrs);
};
const Order = mongoose.model<OrderDoc, OrderModel>('Order', orderSchema);
export { Order };
当我尝试通过 skaffold 编译项目时,它给了我这个错误: 错误 TS2305:模块“@inbaltickets/common”没有导出成员“OrderStatus”。
我该如何解决?
发生这种情况有两个原因:
npm update
不会更改 package.json 文件,因此 skaffold 不知道更改,您可以尝试执行 npm update --save
,请参阅此处的参考:https://docs.npmjs.com/cli/ v8/命令/npm-update
您可以更新模块,然后转到
package.json
并手动更改您的模块版本,这将强制在skaffold中重建。