Nel mio angolare 2 app (SystemJS Module Manager, Carattere tipografico come linguaggio di scripting) ho bisogno di importare un modulo NPM di gestire la crittografia (sia cripto-JS; Forge-JS o di qualsiasi altro ha lo scopo)Come importare i moduli NPM non core in Angular 2 ad es. (usare una libreria di crittografia)?
Nel caso di CryptoJS, dopo l'installazione tramite npm installare * ho provato aggiungendo:
<script src="node_modules/crypto-js/crypto-js.js"></script>
in index: html.
Il mio servizio (app/servizi/mia-service.service.ts) ho importare tramite
import {CryptoJS} from 'node_modules/crypto-js/crypto-js.js' // or /aes.js --> same issue
Tuttavia l'importazione non funziona correttamente, come ad esempio
console.log(CryptoJS);
stampe undefined.
Ho anche cercato di aggiungere il percorso del modulo in
System.config({
// ...
map: {
CryptoJS
}
}
e importarlo nel mio servizio da
import {CryptoJS} from 'cryptoJs';
Mentre io non sono sicuro di cosa devo effettivamente messo in SystemJS config nessuna delle soluzioni che ho provato ha funzionato.
EDIT Ho provato anche ...
// import ... as to overcome no default export
import * as CryptoJS from 'node_modules/crypto-js/crypto-js.js';
ma poi
console.log(CryptoJS.);
dà nessun AES/qualunque metodo (il mio editore di solito Consigli utili quali metodi potrei usare tramite auto-completamento)
EDIT 2 ora grazie a contributo Thierry e PierreDuc è chiaro che t typings e module import sono concetti non collegati.
Tuttavia nessuno di loro funziona. Questo è quello che ho fatto:
Ho scaricato CryptoJS typings file, lo mise in tipizzazioni/cryptojs/cryptojs.d.ts
Poi ho aggiunto
/// <reference path="cryptojs/cryptojs.d.ts"/>
a tipizzazioni/main.d.ts
poi ho aggiunto cryptojs nella mappa di configurazione di SystemJS:
cryptojs: "node_modules/crypto-js/crypto-js.js"
Alla fine ho cercato di importare cryptojs nel mio servizio da
import CryptoJS from 'cryptojs'
Per quanto vedo ci sono 2 problemi:
- le tipizzazioni non vengono caricate poiché non vi è alcun completamento automatico quando si tenta di importare il modulo (anche io provato a riavviare l'app Angular 2). Forse non ho capito come importare digitazioni esterne?
- il modulo non viene caricato in ogni caso, vedo che da console.log (cryptojs) (non viene stampato nulla, nemmeno indefinito; improbabili miei precedenti tentativi)
EDIT 3
Infine Ho ottenuto l'importazione funzionante grazie ai consigli di Thierry e PierreDuc (non sono sicuro di cosa sia andato storto in primo luogo). Tuttavia ho ancora problemi con la digitazione.
Nonostante metto
/// <reference path="../../typings/cryptojs/cryptojs.d.ts"/>
direttamente al mio servizio, quando scrivo
import CryptoJS from 'cryptojs';
appena sotto quella linea, non ottengo alcuna completamento automatico e quando inizio angolare 2 app sopra da inizio NPM; Ottengo il seguente errore e l'applicazione non si avvia
app/services/user.service.ts(6,22): error TS2307: Cannot find module 'cryptojs'.
NOTA: Se posso aggiungere cryptojs a SystemJS config (ma non a) e poi scrivere (senza alcuna importazione)
console.log(CryptoJS.AES.encrypt('my message', 'secret key123').toString());
funziona ma preferirei risolvere i dattilografi + i problemi di importazione.
aggiungi [CryptoJS Definitely Typed] (https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/cryptojs/cryptojs.d.ts) ai tuoi digitamenti e 'crypto-js.js' al tuo' index.html' e dovresti essere bravo a farlo. Non dimenticare di aggiungere un '/// ' al tuo file bootstrap –
PierreDuc
Qualunque delle risposte qui sta funzionando per l'ultima versione angolare da oggi? –