Cómo importar módulos npm no centrales en Angular 2, p. Ej. (para usar una biblioteca de cifrado)?

En mi aplicación Angular 2 (administrador de módulos de SystemJS, mecanografiado como lenguaje de programación) necesito importar un módulo npm para manejar el cifrado (Crypto-JS; Forge-JS o cualquier otro que sirva para ese propósito)

En el caso deCryptoJS, después de instalarlo a través denpm install * Intenté agregando:

  <script src="node_modules/crypto-js/crypto-js.js"></script>

eníndice: html.

El en mi servicio (app / services / my-service.service.ts) Lo importo a través de

  import {CryptoJS} from 'node_modules/crypto-js/crypto-js.js' // or /aes.js --> same issue

Sin embargo, la importación no funciona correctamente como por ejemplo

 console.log(CryptoJS);

huellas dactilaresindefinido.

También intenté agregar la ruta del módulo en

 System.config({
     // ...
     map: {
        CryptoJS
    }
}

e importándolo en mi servicio por

 import {CryptoJS} from 'cryptoJs';

Si bien no estoy segurolo que realmente debería poner en la configuración de SystemJS, ninguna de las soluciones que probé funcionó.

EDITAR También intenté ...

// import ... as to overcome no default export
import * as CryptoJS from 'node_modules/crypto-js/crypto-js.js';

pero entonces

 console.log(CryptoJS.); 

no proporciona ningún método AES / lo que sea (mi editor generalmente aconseja qué métodos podría usar mediante la autocompletación)

EDITAR 2 ahora, gracias a la contribución de Thierry y PierreDuc, está claro que los tipos y la importación de módulos son conceptos no vinculados.

Sin embargo, ninguno de ellos está funcionando. Esto es lo que he hecho:

yo descarguéArchivo de tipificación de CryptoJS, póngalo en typings / cryptojs / cryptojs.d.ts

Entonces agregué

  /// <reference path="cryptojs/cryptojs.d.ts"/>

atypings / main.d.ts

Luego agregué cryptojs en la configuración del mapa de SystemJS:

   cryptojs: "node_modules/crypto-js/crypto-js.js"

Finalmente intenté importar cryptojs en mi servicio por

  import CryptoJS from 'cryptojs'

Por lo que veo, hay 2 problemas:

los tipings no se cargan ya que no hay autocompletado cuando intento importar el módulo (también intenté reiniciar la aplicación Angular 2). ¿Quizás no entendí cómo importar tipings externos?el módulo no está cargado de todos modos, puedo ver eso en console.log (cryptojs) (no se imprime nada, ni siquiera está indefinido; es poco probable que mis intentos anteriores)

EDITAR 3

Finalmente conseguí que la importación funcionara gracias al consejo de Thierry y PierreDuc (no estoy seguro de qué salió mal en primer lugar). Sin embargo, todavía tengo problemas con los tipos.

A pesar de que puse

  /// <reference path="../../typings/cryptojs/cryptojs.d.ts"/>

directamente en mi servicio, cuando escribo

  import CryptoJS from 'cryptojs';

justo debajo de esa línea, no obtengo autocompletado y cuando inicio la aplicación Angular 2npm start ; Me sale el siguiente error y la aplicación no se inicia

  app/services/user.service.ts(6,22): error TS2307: Cannot find module 'cryptojs'.

NOTA: Si agrego cryptojs a la configuración de SystemJS (pero no a) y luego escribo (sin importar)

console.log(CryptoJS.AES.encrypt('my message', 'secret key123').toString());

simplemente funciona, pero prefiero resolver los problemas de tipings + importación.

Respuestas a la pregunta(5)

Su respuesta a la pregunta