# \[SOLVED\] Aurelia 2, Kernel/Metadata not detecting metadata properly, bug?

**URL:** <https://discourse.aurelia.io/t/solved-aurelia-2-kernel-metadata-not-detecting-metadata-properly-bug/3363>\
**Category:** Help Requests\
**Created:** [April 2, 2020, 4:14pm UTC](https://discourse.aurelia.io/t/solved-aurelia-2-kernel-metadata-not-detecting-metadata-properly-bug/3363 "2020-04-02T16:14:06Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![xenoterracide](https://yyz1.discourse-cdn.com/flex027/user_avatar/discourse.aurelia.io/xenoterracide/32/1728_2.png) [@xenoterracide](https://discourse.aurelia.io/u/xenoterracide)\
**Post date:** [April 2, 2020, 4:14pm UTC](https://discourse.aurelia.io/t/solved-aurelia-2-kernel-metadata-not-detecting-metadata-properly-bug/3363/1 "2020-04-02T16:14:06Z")

</div>

using 0.6.0, So I’ve written this little “test”

```auto
const reflectKeys = Reflect.getMetadataKeys(OrderService).map( (k) => Reflect.getOwnMetadata(k, OrderService));
  let getOwnKeys = Metadata.getOwnKeys(OrderService).map((k) => Metadata.getOwn(k, OrderService));
  const dependencies = DI.getDependencies(OrderService);

  root.get<Logger>(LoggerDefault).info( 'Reflect %O Metadata %O Dependencies %O', reflectKeys, getOwnKeys, dependencies);

```

```auto
info: Reflect [
  [
    [Function: AmqpSender] { register: [Function: register] },
    [Function: Object] --- must be 'LoggerDefault`
  ]
] Metadata [
  [<1 empty item>, 'LoggerDefault'],
  ['au:annotation:di:paramtypes', 'au:annotation:di:dependencies']
] Dependencies [<1 empty item>, 'LoggerDefault']

```

So here’s `AmqpSender`

```auto
@singleton()
export class AmqpSender implements Sender<any, void> {
  constructor(
    @inject(LoggerDefault) private readonly log: Logger,
    @inject(AmqpChannel) private readonly channel: Channel,
  ) {}

  async send(exchange: Exchange, message: AggregateEvent<any, any>): Promise<void> {
    this.log.silly('publishing to %s %j', exchange, message);
    if (!this.channel.publish(exchange, message.type, Buffer.from(JSON.stringify(message)))) {
      this.log.error('failed to publish %s %j', exchange, message);
    }
  }
}

```

and more importantly, what’s needed from `OrderService`

```auto
@singleton()
export class OrderService {
  constructor(
    private readonly sender: AmqpSender,
    @inject(LoggerDefault) private readonly log: Logger,
  ) {}

```

this is what’s in `tsconfig`

```auto
{
  "compilerOptions": {
    "outDir": "build",
    "target": "es2018",
    "module": "commonjs",
    "lib": [
      "es2018"
    ],
    "moduleResolution": "node",
    "declaration": true,
    "strict": true,
    "esModuleInterop": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "sourceMap": true,
    "resolveJsonModule": true
  },
  "include": [
    "src/**/*"
  ],
  "exclude": [
    "node_modules"
  ],
  "plugins": [
    {
      "name": "@divyenduz/ts-graphql-plugin"
    }
  ]
}

```

for the life of me I can’t figure out why Aurelia doesn’t see AmqpSender, when `reflect-metadata` can. Is this a bug?

_udpate_ I checked nightly, it doesn’t appear to work there either

_UPDATE_ decided a bug is appropriate because replacing the internally developed library with `reflect-metadata` fixed the issue. [https://github.com/aurelia/aurelia/issues/833](https://github.com/aurelia/aurelia/issues/833)
