#javascript #angular #typescript #polyfills #angular-library
#javascript #angular #typescript #полизаполнения #angular-библиотека
Вопрос:
Я пытаюсь импортировать модуль из сгенерированного пакета библиотеки Angular, расположенного внутри vendor
вложенной папки src/
.
index.html
<head>
...
<script type="text/javascript" charset="utf-8" src="./vendor/example/bundles/example.umd.js"></script>
</head>
Тем не менее, у меня возникли некоторые проблемы с импортом модуля из этого в моем app.module.ts
. Пожалуйста, есть идеи, как это сделать?
Похоже, что @angular /core и @angular / common peerDependencies библиотеки angular также должны быть включены в скрипт для корректной работы.
Я буду признателен за любую помощь
Ответ №1:
Вы не должны добавлять <script>
тег, который ссылается на локальный файл, потому что этот локальный файл не будет включен в сборку.
Вместо этого используйте раздел конфигурации скриптов angular.json
файла, например:
"scripts": [
{ "input": "src/vendor/example/bundles/example.umd.js" }
]
Это позволит встроить example.umd.js
файл в выделенный файл сборки Angular. Поскольку он упакован как UMD, к нему будет прикреплен объект window
, содержащий API импортируемой библиотеки.
Чтобы остановить TypeScript из-за жалобы на несуществующую переменную, просто добавьте это: declare var example;
(замените example
на реальное имя глобального объекта).
Комментарии:
1.
(global = global || self, factory(global.example= {}, global.ng.core, global.rxjs, global.ng2Stompjs, global.ng.common));
Ошибка воспроизводится здесь: Uncaught TypeError: не удается прочитать свойство ‘core’ неопределенного2. Кажется, что свойства объектов ng , rxjs и ng2Stompjs глобальных
undefined
3. Это означает, что для того, чтобы ваша библиотека работала, необходимо импортировать некоторые зависимости. Вы уверены, что
example
это не библиотека Angular, которую следует импортировать в один из ваших модулей Angular?4. Ну, вам не следует пытаться импортировать эту библиотеку как UMD, а как ESM с файлами определения TypeScript. В идеале, если эта библиотека находится в NPM, установите ее с
npm i example
5. Это угловой модуль? Доступен ли он как пакет ESM (не UMD)?