2016-01-21 2 views
1

Я все время получаю модуль не найденных ошибок всякий раз, когда я пытаюсь импортировать модули. По какой-то причине import {} from 'angular2/core' работает нормально, но импорт любого другого модуля не работает.Как импортировать модули в Angular2?

Я стараюсь, чтобы import * as Crypto from 'crypto-browserify', который находится в node_modules. Я попытался настроить путь в System.Config, чтобы указать путь к правильному каталогу, но тогда все модули, которые криптографируют ссылки, не могут быть найдены, если я не включу их вручную в путь. Как настроить его, чтобы он искал модуль A в /node_modules/A?

+0

Если вы посмотрите на код этого пакета, он не экспортирует много .... Только пара функций. https://github.com/crypto-browserify/crypto-browserify/blob/master/index.js – inoabrian

+0

да, но мой вопрос немного более общий. Я также пытаюсь использовать крипто-js. Я действительно не понимаю, как машинопись вернется туда, где расположены определения типов и модули, кажется магическим. – jz87

+0

Например, я установил crypto-js, который находится в '/ node_modules/crypto_js', а также определения типов'/types/crypto-js/crypto-js.d.ts'. Проблема в том, что я пишу 'import * как Crypto из 'crypto-js'', который говорит, что модуль не найден. Если я жестко задаю путь 'import crypto = require ('/ node_modules/crypto-js/crypto-js.js')', то он работает, но не находит определения типов, поэтому у меня нет intellisense. – jz87

ответ

2

Так что я получил его работу на моем конце. Вы должны включить его в HTML

<script src="wwwroot/lib/crypto-js/crypto-js.js"></script> 

Затем вы должны добавить ссылку на ТСД в файле TS

/// <reference path="../tsd/crypto-js/cryptojs.d.ts" /> 
https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/crypto-js/crypto-js.d.ts 

и в своем коде вы можете Refernce через глобальную переменную она экспорт.

CryptoJS. 
+0

Не могли бы вы поделиться файлом plnkr и .d.ts, который вы использовали. В моем исходном файле с машинописными текстами я сделал следующее: 'let CryptoJS = window [" CryptoJS "];' then 'let sha1 = CryptoJS.SHA1 (my_string);'. Но не intellisense! – user3636086

+0

Вам не нужно делать Window ["CryptoJS"]; Это глобальная переменная, открытая только CryptoJS. Intellisense исходит из TSD, который я добавил к моему ответу. – inoabrian

+0

Я добавил файл d.ts, поэтому у меня есть intellisense. Я использую глобальную переменную 'Crypto', но у меня есть ошибка во время транспиляции:' ошибка TS2304: Не удается найти имя 'CryptoJS''. Javascript выполняется отлично. Итак, остается одна загадка: как глобальное имя 'CryptoJS' может быть известно машинописному шрифту? – user3636086

Смежные вопросы