Mi intento de compilar para producción falla cada vez debido a este error:
Intento de error de importación: 'descifrar' no se exporta desde '../../../../util/security' (importado como 'descifrar').
Este error solo aparece cuando intento compilar para producción (npm run build).
Esta es la forma en que importo mis módulos:
import {encrypt2, decrypt} from "../../../../util/security";Y cómo lo exporto:
module.exports = { decrypt: function(encrypted_route) { encrypted_route = atob(encrypted_route); let [initialVector, salt, aes_route] = encrypted_route.split("::"); let key = generateKey(salt); let cipherParams = CryptoJS.lib.CipherParams.create({ ciphertext: CryptoJS.enc.Base64.parse(aes_route) }); let unencrypted = CryptoJS.AES.decrypt( cipherParams, key, {iv: CryptoJS.enc.Hex.parse(initialVector)} ); return unencrypted.toString(CryptoJS.enc.Utf8); }, };(El módulo descifra mi ruta cifrada)
Revisé y el archivo está en el lugar correcto, además, en el modo de desarrollo funciona según lo previsto.
La solución aquí es reemplazar las exportaciones de estilo Node.js ( module.exports = ) con exportaciones ES6 ( export ... o export default ... dependiendo de cómo desee importarlo).
La razón es que los estilos de importación/exportación tienen que ser compatibles y, aunque hay escenarios en los que esto podría funcionar, mezclar los dos estilos en una aplicación React no es la mejor idea.
Cambia tu importación a:
import * as security from "../../../../util/security";y usarlo como:
security.decrypt(...)