Recibo la siguiente lista de errores cuando ejecuto ng serve .
Mi paquete JSON es el siguiente:
{ "name": "ProName", "version": "0.0.0", "scripts": { "ng": "ng", "start": "ng serve", "build": "ng build", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" }, "private": true, "dependencies": { "@angular-devkit/build-angular": "~0.12.0", "@angular/animations": "5.2.10", "@angular/common": "5.2.10", "@angular/compiler": "5.2.10", "@angular/compiler-cli": "5.2.10", "@angular/core": "5.2.10", "@angular/forms": "5.2.10", "@angular/platform-browser": "5.2.10", "@angular/platform-browser-dynamic": "5.2.10", "@angular/router": "5.2.10", "@types/dotenv": "^4.0.3", "@types/errorhandler": "0.0.32", "@types/express": "^4.16.0", "@types/node": "^10.5.1", "apostille-library": "^7.1.0", "core-js": "^2.5.4", "dotenv": "^6.0.0", "errorhandler": "^1.5.0", "express": "^4.16.0", "nem2-sdk": "^0.9.7", "rxjs": "~6.3.3", "stream": "0.0.2", "tslib": "^1.9.0", "typescript": "^2.9.2", "zone.js": "~0.8.26" } }El error que obtengo:
ERROR en ./node_modules/aws-sign2/index.js Módulo no encontrado: Error: No se puede resolver 'crypto' en '/Users/MYPC/Documents/Myproj/ProName/node_modules/aws-sign2' ERROR en ./node_modules /aws4/aws4.js Módulo no encontrado: Error: No se puede resolver 'crypto' en '/Users/MYPC/Documents/Myproj/ProName/node_modules/aws4' ERROR en ./node_modules/ecc-jsbn/index.js Module no encontrado: Error: No se puede resolver 'crypto' en '/Users/MYPC/Documents/Myproj/ProName/node_modules/ecc-jsbn' ERROR en ./node_modules/http-signature/lib/verify.js Módulo no encontrado: Error: no se puede resolver 'crypto' en '/Users/MYPC/Documents/Myproj/ProName/node_modules/http-signature/lib' ERROR en ./node_modules/http-signature/lib/signer.js Módulo no encontrado: Error : No se puede resolver 'crypto' en '/Users/MYPC/Documents/Myproj/ProName/node_modules/http-signature/lib' ERROR en ./node_modules/nem-sdk/build/external/nacl-fast.js Módulo no encontrado: Error: No se puede resolver 'crypto' en '/Users/MYPC/Documents/Myproj/ProName/node_modules/nem-sdk/build/external' ERROR en ./node_modules/nem-sdk/node_modules/aws-sign2/index.js
Me encontré con un problema similar últimamente al intentar usar otra biblioteca ( tiff.js ) en un pequeño proyecto con el que estaba experimentando.
La forma en que solucioné esto fue agregar lo siguiente a mi archivo package.json , justo después de la sección devDependencies .
"devDependencies": { ... }, "browser": { "crypto": false }Esto no pareció tener ningún efecto adverso al intentar usar la biblioteca en la aplicación.
Agregar esta configuración en el archivo tsconfig.json en ese proyecto resuelve esta advertencia
"compilerOptions": { "baseUrl": "./", "paths": { "crypto": [ "node_modules/crypto-js" ] }Me gusta la respuesta de R. Richards , pero pensé que sería útil proporcionar más información.
Este es un problema conocido con Angular, y el equipo de desarrollo de Angular CLI parece pensar que es una característica más que un error. Yo, al igual que otros desarrolladores en este tema , no estoy de acuerdo. Los colaboradores de ese hilo proporcionaron varias soluciones alternativas, pero mi proyecto no se compiló correctamente hasta que implementé la solución de R. Richards. Sin embargo, no revertí los cambios anteriores, por lo que las correcciones de tacnoman y GrandSchtroumpf pueden ser útiles para otros.
Algunos, como clovis1122 aquí y otros en ese tema, han cuestionado por qué una aplicación web necesitaría acceso a estas bibliotecas y por qué las tareas necesarias no se pueden completar en el lado del servidor. No puedo hablar por todos, pero mi caso de uso es que, al autenticar una cuenta de usuario, Strapi responde con una cadena de token web JSON que debe ser decodificada por el cliente. Dado que la biblioteca necesaria depende de crypto y stream , no podrá extraer el tiempo de vencimiento de JWT a menos que esas dependencias estén disponibles.
En caso de que alguien tenga problemas para extrapolar la respuesta de R. Richards, deberá establecer en falso cualquier dependencia que aparezca en los errores "no se pueden resolver x". Por ejemplo, la parte crítica de mi paquete.json es:
"browser": { "crypto": false, "stream": false }