В контексте приложения Node.js/Express/Angular2/typescript (IDE = Visual Studio) я пытаюсь загрузить стороннюю утилиту .js (пакет) на клиентскую сторону (для использования в директиве). Кто-то сделал для него определения машинописного текста. Файл d.ts выглядит следующим образом:Angular2 - требуется модуль на стороне клиента
declare module "packery" {
interface PackeryOptions { stuff... }
class Packery { stuff .... }
export = Packery;
}
Я имею в виду этот d.ts файл, указать браузеру, где живет .js packery сценарий, а затем импортировать модуль как таковой:
import Packery = require('packery');
Это компилируется без жалобы. Однако при запуске браузер пытается (и не удается) найти «упаковку» в http://localhost/packery, а не в том, что он знает, что это пакетная библиотека. Это в отличие от других операторов импорта, которые я сделал на клиенте, например:
import {Http, HTTP_PROVIDERS} from 'angular2/http';
, которые работают - насколько я могу сказать только две части информации, которую я дал для тех, были также d. ts-файл и расположение файла .js, как и пакет. Но, должно быть, я что-то упускаю. Попробовали множество комбинаций мест размещения файлов и ссылок и не могли заставить его работать. Как я могу получить правильную ссылку на «упаковку»?
Спасибо!
как @Langley указал ниже. D.ts файлы - это только файлы определений, они не содержат никакого фактического кода из самой библиотеки. Если вы обновите свой вопрос информацией о том, как вы создаете приложение (Webpack/SystemJs/other), мы можем предоставить дополнительную информацию о том, как загрузить библиотеку. – Zyzle
Спасибо. Я понимаю, что d.ts - это только определения. Мой вопрос следующий. Это заявление компилируется и работает: import {Http, HTTP_PROVIDERS} из 'angular2/http'; если у вас есть d.ts в вашей среде IDE и правильная ссылка, скажем, index.html. Браузер не переходит к «localhost/angular2/http», чтобы попытаться извлечь модуль, он точно знает его расположение. С упаковкой у меня также есть ссылка d.ts и соответствующая ссылка .js в index.html.Он компилируется, но во время выполнения оператор require вызывает нагрузку с «localhost/packery». Должно быть дополнительное сопоставление или ссылка? –
Что касается загрузчиков, я не испортил урон по умолчанию, и я понимаю, что systemjs по умолчанию (я загружаю system.js в index.html). Благодаря! –