Как использовать CryptoJS с Angular 2 и TypeScript в среде сборки WebPack?

Есть целая куча вопросов об использовании библиотеки CryptoJS с Angular 2, но большинство из них предполагают использование SystemJS, и все они кажутся устаревшими с текущей версией TypeScript. Может ли кто-нибудь дать четкие и простые инструкции о том, как использовать библиотеку CryptoJS с Angular 2 и TypeScript.

Я установил CryptoJS, используя npm install crypto-js.

Я пробовал рекомендуемые типы install crypto.js --ambient --save, но это просто дает предупреждение о том, что --ambient устарел и вместо этого используется --global.

Вместо этого я использовал --global, но это выдает ошибку о том, что типизация недоступна!

Будем признательны за любые советы новичкам в WebPack, NodeJS и TypeScript. У меня есть библиотека CryptoJS, установленная в папке node_modules, но любые «разумные» попытки «импортировать» CryptoJS терпят неудачу с «Модуль не найден». введите здесь описание изображения


person Ian Smith    schedule 08.12.2016    source источник


Ответы (3)


typings install dt~crypto-js --global --save

Объяснение:

  • --global CryptoJS — это глобальный модуль
  • dt~ Типы находятся внутри репозитория DT: https://github.com/DefinitelyTyped/DefinitelyTyped
  • --save Потому что вы хотите, чтобы он хранился внутри typings.json, не так ли?
person rzelek    schedule 08.12.2016
comment
Спасибо. Это было то самое дт~, которого мне не хватало. Это имеет смысл, когда вы понимаете, что источник, о котором предупреждает сообщение, добавляется с префиксом ~. Полный ответ о том, как использовать CryptoJS с Angular2 и TypeScript, был скрыт в этом операторе импорта, который я нашел в другом месте. Другие ответы, подразумевающие, что импорт {CryptoJS} из 'crypto-js' не работает, просто не удался. импортировать * как CryptoJS из 'crypto-js'; - person Ian Smith; 08.12.2016
comment
Вы совершенно правы. Помню, у меня были такие же проблемы с префиксами dt~. Проблемы с импортом, которые у вас возникают, связаны с angular-cli, поскольку ранее они использовали SystemJS. Первый способ импорта был действителен для настроек SystemJS. - person rzelek; 08.12.2016
comment
Это создает папку для cryptoJS, но index.js говорит, что глобальный экспорт невозможен, кроме как на верхнем уровне. Я искал в Интернете решение/альтернативу этой проблемы, но не смог найти окончательного ответа. Для меня та же исходная ситуация, что и для ОП: у меня установлен CryptoJS в node_modules, но я не могу его импортировать. Чтобы добавить, я не могу установить как глобальный модуль, потому что: typings ERR! message Attempted to compile "crypto-js" as a global module, but it looks like an external modu le. You'll need to remove the global option to continue. - person Torsten N.; 23.03.2017
comment
Похоже, типизация crypto-js больше не является глобальной (я не уверен, давно не использовал типизацию). Попробуйте задать отдельный вопрос. Кроме того, если вы используете машинописный текст › 2.0, проверьте @types (stackoverflow.com/questions/39261204/typings-vs-types-npm-scope). - person rzelek; 23.03.2017
comment
@Arek-Żelechowski прав, теперь вы должны использовать npm install --save @types/crypto-js - person Scott R. Frost; 04.04.2017
comment
И как мы можем использовать его внутри компонента? - person Jainam Jhaveri; 25.05.2017

Вот самый простой пошаговый пример установки и использования (работа в проекте nativescript/typescript/angular):

npm install crypto-js

потом:

npm install --save @types/crypto-js

Импорт в какой-либо компонент:

import * as crypto from "crypto-js";

И используйте его:

crypto.DES.decrypt("Your secret", "YOUR_CRYPTO_KEY");
person Bruno Leitão    schedule 21.05.2018
comment
Этот способ вылетает для меня в режиме prod. Я думаю, что должны быть также включены скрипты - person Vlad; 04.11.2018
comment
Я думаю, что вы закончите с этой проблемой github.com/angular/angular -cli/проблемы/. Поправьте меня, если я ошибаюсь? - person Joseph T F; 20.02.2019
comment
Нет необходимости использовать флаг --save при установке типов, почему бы не установить их только для разработки? - person Jiri Kralovec; 02.03.2020
comment
Вы спасли мой день большое спасибо. - person MD Ashik; 28.05.2021

Пакет crypto-js в npm не имеет встроенных типов и больше не поддерживается.

Вы можете попробовать это, Witch поддерживается мной, так же, как и crypto-js с поддержкой TypeScript и модулем ES6: https://www.npmjs.com/package/crypto-es.

person Entronad    schedule 10.01.2020
comment
Хотя это хороший ответ, рассмотрите возможность раскрытия того, что вы являетесь автором библиотеки в своем ответе. - person Sajib Acharya; 21.08.2020
comment
Спасибо за совет! Я раскрою это. - person Entronad; 17.09.2020