Используйте угловую библиотеку локально в новом / отдельном приложении - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь включить библиотеку, которую я встроил в новое приложение.Он собирается успешно, но я получаю сообщение об ошибке во время выполнения main.ts:13 Error: inject() must be called from an injection context.

Когда я беру библиотеку из npm, используя npm i devicewise-angular, проблем нет.Все работает нормально.

Тестовое приложение, сгенерированное с библиотекой, также может отлично использовать локальную библиотеку.

Я добавил пути к моему tsconfig.json файлу.

{
  ...
  "compilerOptions": {
  ...
    "paths": {
      "devicewise-angular": [
        "../devicewise-angular/dist/devicewise-angular"
      ]
    }
  }
  ...
}

Библиотека наиболее определенно найдена, и она прекрасно работает.VSCode intellisense автоматически завершает все.

Вот ошибка

main.ts:13 Error: inject() must be called from an injection context
    at injectInjectorOnly (core.js:520)
    at ɵɵinject (core.js:536)
    at DevicewiseAngularService_Factory (devicewise-angular.js:984)
    at _callFactory (core.js:23211)
    at _createProviderInstance (core.js:23154)
    at resolveNgModuleDep (core.js:23113)
    at NgModuleRef_.get (core.js:24206)
    at resolveDep (core.js:24736)
    at createClass (core.js:24584)
    at createDirectiveInstance (core.js:24400)

Глядя на devicewise-angular.js:984 Я вижу:

/** @nocollapse */ DevicewiseAngularService.ngInjectableDef = ɵɵdefineInjectable({ factory: function DevicewiseAngularService_Factory() { return new DevicewiseAngularService(ɵɵinject(CookieService), ɵɵinject(DevicewiseApiService), ɵɵinject(DevicewiseSubscribeService), ɵɵinject(DevicewiseMultisubscribeService)); }, token: DevicewiseAngularService, providedIn: "root" });

Я ожидаю того же результата, используялокальная версия библиотеки, как будто я установил ее с помощью npm.Почему я получаю эту статическую ошибку внедрения, когда пытаюсь использовать это как это?

1 Ответ

0 голосов
/ 26 июня 2019

Осторожнее с такого рода взломами, так как не работают узлы-зависимости.

Библиотеку можно «эмулировать» локально, linking это с вашим менеджером зависимостей (npm или yarn).
Запустите npm link внутри папки с вашей локальной библиотекой с package.json (... / dist / devicewise-angular), и вы сможете запустить npm link devicewise-angular в вашем угловом проекте, и он будет использовать вашу локальную копию вместо официального.

Пожалуйста, обратитесь к официальной документации , чтобы изучить ее детали.
Удачного кодирования!

...