Loopback4 Ошибка при внедрении зависимости: не привязана ни к какому значению в приложении контекста - PullRequest
1 голос
/ 13 марта 2020

У меня есть эта ошибка

Unhandled error in POST /client: 500 Error: The key 'controllers.pointController' is not bound to any value in context application

Мой класс

constructor(
        @repository(ClientRepository)
        public clientRepository: ClientRepository,           
        // Controllers            
        @inject('controllers.pointController')
        public pointController: PointController,

    ) {
    }
// functions

Я следую за документированием loopback4 и внедрением зависимостей, но не работает

есть идеи?

1 Ответ

1 голос
/ 17 марта 2020

По умолчанию LoopBack использует ключи PascalCase при привязке классов контроллера, см., Например, этот тест:

https://github.com/strongloop/loopback-next/blob/0444120cda7119c66bc2170f4817e67d8dc9d312/packages/core/src/ tests / unit / application.unit.ts # L25- L33

expect(binding.key).to.equal('controllers.MyController');

Ваш пример не предоставляет достаточно информации, поэтому я предполагаю, что ваш контроллер определен как класс PointController в src/controllers/point.controller.ts файле, и вы используете @loopback/boot для загрузки и зарегистрируйте артефакты вашего приложения.

В этом случае вам необходимо исправить свой код следующим образом - обратите внимание на заглавные буквы P:

@inject('controllers.PointController')

Дополнительная информация

В будущем вы можете использовать журналы отладки, чтобы найти ключи привязки, созданные для различных артефактов. На Unix (MacOS, Linux):

DEBUG=loopback:context:binding npm start

В журнале отладки вы должны увидеть следующее сообщение:

loopback:context:binding Bind controllers.PointController to class PointController

Часть controllers.PointController является ключ привязки для @inject, часть PointController - это имя класса контроллера.

...