Giter VIP home page Giter VIP logo

Comments (11)

whxaxes avatar whxaxes commented on May 22, 2024
TSError: [egg-core] load file: /Users/wangpeng/resp/wt-hulk/back-end/app/service/TeamService.ts, error: [egg-core] load file: /Users/wangpeng/resp/wt-hulk/back-end/app/service/activityService.ts, error: ⨯ Unable to compile TypeScript:
app/service/activityService.ts(6,22

这个文件代码能发出来看看么

from egg-ts-helper.

whyour avatar whyour commented on May 22, 2024
import { Service } from 'egg';
export default class ActivityService extends Service {
  public async addActivity(obj: any) {
    const { ctx } = this;
    const data = await ctx.model.Activity(obj).save();
    return data;
  }
  public async getActivties(condition: any, fields: any) {
    const { ctx } = this;
    const data = await ctx.model.Activity.find(condition, fields).lean();
    return data;
  }
}

egg test 里面 用的

const data = await new ctx.model.Activity(obj).save();

最终结果还是没法在一个文件夹下面挂载多个service或者model或者其他层。

from egg-ts-helper.

whxaxes avatar whxaxes commented on May 22, 2024

没懂你的意思,能提供个稳定复现的 repo 么?我可以帮你看看

from egg-ts-helper.

whyour avatar whyour commented on May 22, 2024
/Users/wangpeng/resp/wt-hulk/back-end/node_modules/ts-node/src/index.ts:261
    return new TSError(diagnosticText, diagnosticCodes)
           ^
TSError: [egg-core] load file: /Users/wangpeng/resp/wt-hulk/back-end/app/service/TeamService.ts, error: [egg-core] load file: /Users/wangpeng/resp/wt-hulk/back-end/app/service/customerService.ts, error: ⨯ Unable to compile TypeScript:
app/service/customerService.ts(100,46): error TS2339: Property 'Team' does not exist on type 'Model<any, {}>'.
app/service/customerService.ts(190,51): error TS2339: Property 'Team' does not exist on type 'Model<any, {}>'.
app/service/customerService.ts(213,54): error TS2339: Property 'User' does not exist on type 'Model<any, {}>'.
app/service/customerService.ts(359,48): error TS2339: Property 'User' does not exist on type 'Model<any, {}>'.
app/service/customerService.ts(513,58): error TS2339: Property 'Team' does not exist on type 'Model<any, {}>'.
app/service/customerService.ts(518,76): error TS2339: Property 'CrmCustomer' does not exist on type 'Model<any, {}>'.

    at createTSError (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/ts-node/src/index.ts:261:12)
    at getOutput (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/ts-node/src/index.ts:367:40)
    at Object.compile (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/ts-node/src/index.ts:558:11)
    at Module.m._compile (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/ts-node/src/index.ts:439:43)
    at Module._extensions..js (module.js:664:10)
    at Object.require.extensions.(anonymous function) [as .ts] (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/ts-node/src/index.ts:442:12)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.loadFile (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/egg-core/lib/utils/index.js:19:19)
    at getExports (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/egg-core/lib/loader/file_loader.js:199:23)
    at ContextLoader.parse (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/egg-core/lib/loader/file_loader.js:158:25)
    at ContextLoader.load (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/egg-core/lib/loader/file_loader.js:67:24)
    at AppWorkerLoader.loadToContext (/Users/wangpeng/resp/wt-hulk/back-end/node_modules/egg-core/lib/loader/egg_loader.js:407:28)
[2018-11-23 11:15:48.858] [cfork:master:86403] worker:86416 disconnect (exitedAfterDisconnect: false, state: disconnected, isDead: false, worker.disableRefork: true)
// service/customerService.ts

export default class CustomerService extends PointConvertService {

    public async getTeamByDomain(domain: string): Promise<LcTeam> {
        return await this.ctx.model.Lesschat.Team.findOne({
            is_deleted: 0,
            domain: domain
        }).lean();
    }

    public async addCustomer(body: any) {
        const { ctx } = this;
        let obj: any = {};
        let lccustomer = await ctx.model.LcCrmCustomer.findOne({ _id: body.lc_customer_id }).lean();
        let contract = await ctx.model.Contract.findOne({ _id: body.contract_id }).lean();
        let lcteam = await ctx.model.Lesschat.Team.findOne({ domain: lccustomer.notes }).lean();
        let owner = await ctx.model.Lesschat.User.findOne({ team: lcteam._id, role: 4 }).lean();
    }

    public async create(customer: Customer): Promise<void> {
        await new this.ctx.model.Customer(customer).save();
    }

    public async getActiveCustomers(customers: any, activeness: number) {
        const { ctx } = this;
        let lcUsers = await ctx.model.Lesschat.User.find({ team: { $in: teamIds }, status: { $ne: 2 } }, { team: 1 }).lean();
        let statistics = await ctx.model.Statistic.find({ team: { $in: teamIds }, date: { $gte: start, $lt: end } }, { 'taskCount': 1, 'team': 1, 'calendarEventInstanceCount': 1, 'workReportCount': 1, 'driveCount': 1, 'approvalCount': 1 }).lean();
    }

    public async getCustomerById(id: string): Promise<Customer> {
        return await this.ctx.model.Customer
            .findOne({
                _id: id,
                is_deleted: 0
            });
    }

    public async getDetailForMarket(teamId: string): Promise<DetailMarketViewModel> {
        const team: Team = await this.ctx.model.Lesschat.Team.findOne({
            is_deleted: 0,
            _id: teamId
        }, "domain");
    }

}

目录结构
image

不知道这个你是否理解。

from egg-ts-helper.

whxaxes avatar whxaxes commented on May 22, 2024

@whyour 能看看你的 model 是怎么写的

from egg-ts-helper.

whyour avatar whyour commented on May 22, 2024

@whxaxes

export default (app) => {
    const mongoose = app.mongoose;
    const Schema = mongoose.Schema;
    const conn = app.mongooseDB.get('lcMongodbServer');
    const CrmContactSchema = new Schema({
        mobile: { type: String },
        team: { type: Schema.Types.ObjectId },
        customer: { type: Schema.Types.ObjectId },
        is_deleted: { type: Number }
    });
    return conn.model('crm_contacts', CrmContactSchema);
}

from egg-ts-helper.

whyour avatar whyour commented on May 22, 2024

好了,加了

还有一个办法,将 egg-ts-helper 升到 1.10.0 ,在 typings/index.d.ts 中添加这么一个声明来复写掉 model 的类型

import { MongooseModels } from 'egg';

declare module 'egg' {
  interface IModel extends MongooseModels {}

  // extend app
  interface Application {
    model: IModel;
  }

  // extend context
  interface Context {
    model: IModel;
  }
}

还有个问题,每次启动都会覆盖typings下的文件吗。

from egg-ts-helper.

whxaxes avatar whxaxes commented on May 22, 2024

@whyour 会覆盖 app/ 和 config/ 下的,如果你不想被覆盖,就写到 typings/ 下

from egg-ts-helper.

whxaxes avatar whxaxes commented on May 22, 2024

@whyour 你的问题不是 egg-ts-helper 带来的,是 https://github.com/eggjs/egg-mongoose/blob/master/index.d.ts 里的声明有问题 ...

from egg-ts-helper.

whxaxes avatar whxaxes commented on May 22, 2024

egg-ts-helper 生成的 model 下的声明,都是挂载到 IModel 下的,这个由你们决定要不要挂到 context 这些之下,因为 model 的实现太多了,没法通配,只能由你们来决定了

from egg-ts-helper.

whxaxes avatar whxaxes commented on May 22, 2024

没其他问题我就 close 掉了

from egg-ts-helper.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.