Импорт функций внешнего модуля в Angular

Я написал модуль es6 с некоторыми экспортированными функциями и загрузил его в npm (загрузил его перенесенный код es5).

Я пытаюсь использовать этот пакет в проекте Angular, который использует SystemJS в качестве загрузчика модулей (это гибридное приложение AngularJS 1.5 и Angular 5.2 в середине процесса миграции).

Я добавил в systemjs.config.js новую библиотеку, аналогично тому, как я добавил rxjs (направляя его по его пути в node_modules).

Но при попытке использовать одну из общедоступных функций модуля IntelliJ не знает, откуда ее импортировать (как он знает, например, при использовании функции noop для rxjs), и если я добавлю оператор импорта вручную (import {func-name } из 'package-name'), то компилятор TypeScript выдает ошибку.

Какие-либо предложения? Мне нужно что-то изменить в модуле, который я опубликовал в npm, или в способе, которым я пытаюсь использовать функции модуля в Angular?

Спасибо.

Угловой код

systemjs.config.js:

map: {
      'app': './',

      // angular bundles
      '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
      '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
      '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
      '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
      '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
      '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
      '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
      '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
      '@angular/upgrade/static': 'npm:@angular/upgrade/bundles/upgrade-static.umd.js',

      // other libraries
      'rxjs'                     : 'npm:rxjs',
      .
      .
      'my-package'               : 'npm:my-package/dist/my-package.js'
    },

my-component.component.ts:

import { func } from 'my-package';
.
.
.
ngAfterContentInit() {
    func();
}

Ошибка компилятора TypeScript:

error TS2307: Cannot find module 'package-name'

person Guy    schedule 27.01.2018    source источник
comment
Мне импорт кажется правильным. Какую ошибку вы получаете от компилятора TypeScript?   -  person GreyBeardedGeek    schedule 28.01.2018
comment
как мы можем решить вашу проблему, если вы ничего не предоставили? Нет кода = нет помощи   -  person smnbbrv    schedule 28.01.2018
comment
@GreyBeardedGeek - ошибка: ошибка TS2307: не удается найти модуль имя-пакета   -  person Guy    schedule 28.01.2018
comment
@smnbbrv - Скоро выложу код. Я не уверен, что проблема в пакете, который я опубликовал в npm, или в коде Angular, который его использует, поэтому я не знал, какой код предоставить.   -  person Guy    schedule 28.01.2018


Ответы (1)


Теперь он работает, после того как я изменил пакет npm на сборку версии umd.

И в systemjs.config.js:

'my-package': 'npm:my-package/dist/my-package.umd.js'

Кроме того, создание файла index.d.ts для моего пакета npm (файл определения TypeScript) заставило IntelliJ выполнять автоматический импорт функций библиотеки и заставило tsc не выходить из строя с ошибкой «Не удается найти модуль».

person Guy    schedule 29.01.2018