我试图在我的angular2项目中导入crypto-js。
我关注了几个SO问题以及angular-cli guide,但最后我仍然有错误无法找到模块' crypto-js'
我尝试了什么:
npm install crypto-js --save
和
typings install dt~crypto-js --global --save
然后我修改了文件 angular-cli-build.js
var Angular2App = require('angular-cli/lib/broccoli/angular2-app');
module.exports = function(defaults) {
return new Angular2App(defaults, {
vendorNpmFiles: [
'systemjs/dist/system-polyfills.js',
'systemjs/dist/system.src.js',
'zone.js/dist/**/*.+(js|js.map)',
'es6-shim/es6-shim.js',
'reflect-metadata/**/*.+(ts|js|js.map)',
'rxjs/**/*.+(js|js.map)',
'@angular/**/*.+(js|js.map)',
'crypto-js/**/*.+(js|js.map)'
]
});
};
和文件 src / system-config.ts
const map: any = {
'crypto-js': 'vendor/crypto-js'
};
/** User packages configuration. */
const packages: any = {
'crypto-js': {
format: 'cjs'
}
};
使用后
import * as CryptoJS from 'crypto-js';
我仍然有错误。我错过了什么吗?
由于
答案 0 :(得分:20)
这可能会对您有所帮助:
https://github.com/Uisli21/SecureAngularLogin
import * as CryptoJS from 'crypto-js';
然后:
import CryptoJS = require('crypto-js');
或
EXPLAIN (FORMAT json, COSTS true)
答案 1 :(得分:1)
您可以尝试以下解决方案:
1. npm install --save @types/crypto-js
2. import { AES } from "crypto-js";
3. AES.encrypt('my message', 'secret key');
答案 2 :(得分:0)
Angular-cli仍然存在一些集成第三方插件的问题。所以,别忘了在index.html
中添加它。像这样添加
<script src="vendor/crypto-js/crypto-js.js"></script>
我认为它会解决你的问题:)
更新
const map: any = {
'crypto-js': 'vendor/crypto-js'
};
/** User packages configuration. */
const packages: any = {
'crypto-js': {
format: 'cjs',
defaultExtension: 'js',
main: 'crypto-js.js'
}
};
答案 3 :(得分:0)
好的我明白了。我只是在typings / crypto-js /中下载DefinitelyTyped文件,然后在导入CryptoJS之前添加行/// <reference path="../../typings/crypto-js/crypto-js.d.ts" />
。
答案 4 :(得分:0)
将此添加到您的Package.JSON
文件中。
"browser": {
"crypto": false
}
这样做会告诉您的应用程序在您运行ng serve
时不要将您的Crypto库捆绑到浏览器中。
答案 5 :(得分:0)
在安装 cryto-js 和@ types / crypto-js
后,在 angular-cli.json 文件中添加脚本路径。"scripts": [
"../node_modules/crypto-js/crypto-js.js"
]