【问题标题】:How to use CryptoJS with Angular 2 and TypeScript in WebPack build environment?如何在 WebPack 构建环境中使用 CryptoJS 与 Angular 2 和 TypeScript?
【发布时间】:2017-04-23 15:12:55
【问题描述】:

关于在 Angular 2 中使用 CryptoJS 库有一大堆问题,但大多数都假设使用 SystemJS,而且在当前版本的 TypeScript 中似乎都过时了。任何人都可以给出关于如何将 CryptoJS 库与 Angular 2 和 TypeScript 一起使用的清晰、简单的说明。

我已经使用npm install crypto-js 安装了 CryptoJS。

我已经尝试了推荐的类型 install crypto.js --ambient --save,但这只是给出了一个关于 --ambient 已被弃用的警告并改为使用 --global。

我使用了 --global 代替,但它给出了一个错误,说没有可用的类型!

对 WebPack、NodeJS 和 TypeScript 新手的任何建议将不胜感激。我在 node_modules 文件夹下安装了 CryptoJS 库,但是任何“明智的”尝试“导入”CryptoJS 都会失败,并显示“未找到模块”。

【问题讨论】:

    标签: angular typescript webpack cryptojs


    【解决方案1】:

    这是最简单的分步安装和使用示例(在 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");
    

    【讨论】:

    【解决方案2】:

    npm 中的 crypto-js 包没有内置类型,不再维护。

    你可以试试这个,Witch 是我维护的,和 crypto-js 一样,支持 TypeScript 和 ES6 模块:https://www.npmjs.com/package/crypto-es

    【讨论】:

    • 虽然这是一个很好的答案,但请考虑在答案中披露您是该库的作者。
    • 感谢您的建议!我会公开的。
    【解决方案3】:
    typings install dt~crypto-js --global --save
    

    解释:

    【讨论】:

    • 谢谢。这是我错过的“dt~”。一旦您意识到消息警告的“源”是通过前缀 ~ 添加的,这是有道理的。关于如何将 CryptoJS 与 Angular2 和 TypeScript 一起使用的完整答案隐藏在我在其他地方找到的这个“导入”语句中。其他暗示 import {CryptoJS} from 'crypto-js' wouid work 的答案只是失败了。从 'crypto-js' 导入 * 作为 CryptoJS;
    • 你完全正确。我记得我在使用 dt~ 前缀时遇到了同样的问题。您遇到的导入问题与 angular-cli 有关,因为它们以前使用过 SystemJS。第一种导入方式对 SystemJS 设置有效。
    • 这会为 cryptoJS 创建一个文件夹,但 index.js 表示除非在顶层,否则无法进行全局导出。我在网上搜索了这个问题的解决方案/替代方案,但我真的找不到一个确凿的答案。对于我来说,这与 OP 的起始情况相同:我在 node_modules 中安装了 CryptoJS,但无法导入它。要添加,我无法安装为全局模块,因为: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.
    • 似乎crypto-js 类型不再是全局的(我不确定,有一段时间没有使用类型)。考虑提出单独的问题。此外,如果您运行 typescript >2.0,请查看 @types (stackoverflow.com/questions/39261204/typings-vs-types-npm-scope)。
    • @Arek-Żelechowski 是正确的,你现在应该使用npm install --save @types/crypto-js
    猜你喜欢
    • 1970-01-01
    • 2017-12-27
    • 2017-07-04
    • 2017-07-07
    • 1970-01-01
    • 2018-02-20
    • 2017-06-26
    • 2017-06-27
    • 2017-01-30
    相关资源
    最近更新 更多