Skip to content

Injection not working with React 16.8.6 #4

@fljmayer

Description

@fljmayer

I followed the instructions to use React IoC in my simple project with TypeScript 3.4.3, but it's not working. I get the error below in the browser console, and when the application tries to access the injected property, it's undefined. What could be the problem?

index.js:1446 Error: undefined is not a valid dependency.
Please specify ES6 class as property type e.g.
class MyService {}
class Dashboard {
  @inject myService: MyService;
}
    at logError (index.esm.js:48)
    at logInvalidMetadata (index.esm.js:77)
    at injectDecorator (index.esm.js:224)
    at inject (index.esm.js:210)
    at applyDecoratedDescriptor.js:14
    at Array.reduce (<anonymous>)
    at _applyDecoratedDescriptor (applyDecoratedDescriptor.js:13)
    at Module../src/react/Dashboard.tsx (Dashboard.tsx:27)
    at __webpack_require__ (bootstrap:786)
    at fn (bootstrap:149)
    at Module../src/react/App.tsx (App.scss?1296:45)
    at __webpack_require__ (bootstrap:786)
    at fn (bootstrap:149)
    at Module../src/react-spa.js (react-spa.js:1)
    at __webpack_require__ (bootstrap:786)
    at fn (bootstrap:149)
    at async Promise.all (:3000/index 0)

The React component looks roughly like this:

import { provider, inject } from "react-ioc";
import { ContentService } from './services/ContentService';

@provider(ContentService)
class Dashboard extends Component<any, State> {

  @inject contentService!: ContentService;

...

and

export class ContentService {
  public loadHeader(): Promise<any> {
    ...
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions