可能的错误
依赖注入提示:【注入失败】
- 检查是否使用的是
interface而非class - 是否在
tsconfig.json中开启了装饰器
json
{
"compilerOptions": {
"experimentalDecorators": true,
"emitDecoratorMetadata": true
}
}编写了controller和method但是访问失败
请检查程序的入口文件
businessPath为项目的业务路径,所有的代码都要放到这个目录下,默认为srccontrollerPath为控制器目录,默认为modules,在businessPath/controllerPath下的所有index.ts为控制器文件,需要默认导出被@Controller装饰的类作为装饰器,否则不会生效
自定义装饰器失效
由于TS装饰器执行顺序的原因,所有的自定义装饰器需要放在Mango装饰器的下方
ts
import { Controller, Get, createParameterDecorator } from 'mango-core'
const Logger = createParameterDecorator(async ({ query }) => {
console.log('log')
return true
})
@Logger // >>>>> 使用错误❌
@Controller({
name: '测试模块',
prefix: '/test',
detail: {
description: '这是一段测试模块的备注',
tags: ['测试']
}
})
@Logger // >>>>> 使用正确✅
export default class DemoController {
@Logger // >>>>> 使用错误❌
@Get('')
@Logger // >>>>> 使用正确✅
async hello() {
return this.service.hello()
}
}类型提示丢失
可能会出现@Controller,@Get等装饰器的参数类型提示失效
这个是由于vscode的typescript版本过低导致的
由于Elysia使用了NoInfer类型工具,而typescript是从5.4版本开始支持的