Comments (11)
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.
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.
没懂你的意思,能提供个稳定复现的 repo 么?我可以帮你看看
from egg-ts-helper.
/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");
}
}
不知道这个你是否理解。
from egg-ts-helper.
@whyour 能看看你的 model 是怎么写的
from egg-ts-helper.
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.
好了,加了
还有一个办法,将 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.
@whyour 会覆盖 app/ 和 config/ 下的,如果你不想被覆盖,就写到 typings/ 下
from egg-ts-helper.
@whyour 你的问题不是 egg-ts-helper 带来的,是 https://github.com/eggjs/egg-mongoose/blob/master/index.d.ts 里的声明有问题 ...
from egg-ts-helper.
egg-ts-helper 生成的 model 下的声明,都是挂载到 IModel
下的,这个由你们决定要不要挂到 context
这些之下,因为 model 的实现太多了,没法通配,只能由你们来决定了
from egg-ts-helper.
没其他问题我就 close 掉了
from egg-ts-helper.
Related Issues (20)
- 执行 npx ets 时报错:SyntaxError: Cannot use import statement outside a module
- egg-mysql如何支持? HOT 1
- process.on('uncaughtException', clean) should throw the error HOT 2
- ets clean 支持清除包含同名 tsx 文件的 js 文件 HOT 4
- 1.23.0 to 1.25.2, auto build diff HOT 1
- 1.25.6生成的mode/index.d.ts 与之前的有差异,导致编译不过 HOT 2
- Auto generated typing errors HOT 2
- webstorm HOT 4
- 添加 egg-socket.io 和 egg-graphql 支持 HOT 4
- 抽象Service,会导致类型丢失。 HOT 2
- 在midway中使用时,plugin.d.ts只会生成内置插件但声明,外部插件的声明不会自动生成 HOT 2
- 升级 chokidar 到 3 HOT 9
- 对于js文件会使用require引入 HOT 1
- Better type inference for egg-mongoose
- jsconfig.json 格式错误
- circulate type HOT 2
- 依赖的ts更新后导致egg-bin项目中的ts-node执行默认切换为4+版本,与之前的ts3+不兼容 HOT 4
- 现在可以支持生成纯js项目的扩展吗?
- 在指定多个controller目录的自定义目录场景下,无法跳过中间目录
- getEggInfo 调用 node 时使用的是直接拼接命令,当项目目录出现空格时会报错
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from egg-ts-helper.