如何在JavaScript中加密解密字符串?遇CryptoJS未定义问题求解
解决‘CryptoJS is not defined’错误的方案
嘿,我来帮你搞定这个报错问题~出现CryptoJS is not defined的核心原因很简单:你的JavaScript代码执行时,CryptoJS库还没被加载到位,或者压根没正确引入它。
下面给你两种场景下的解决方案:
1. 浏览器环境(直接用CDN)
你要确保引入CryptoJS的脚本标签放在你的自定义代码前面,因为浏览器是按顺序加载执行脚本的,如果你的代码先跑了,库还没加载完,自然找不到CryptoJS对象。
正确的代码示例:
<!-- 先加载CryptoJS的AES库 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script> <!-- 再写你的加密解密逻辑 --> <script> // 加密 var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase"); // 解密 var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase"); // 划重点:解密后要转成UTF8字符串才能看到原内容哦 console.log(decrypted.toString(CryptoJS.enc.Utf8)); // 会输出 "Message" </script>
另外还要注意:如果你的网络访问不了这个CDN链接,也会导致库加载失败,这时候可以换个可用的CDN,或者下载库文件到本地引入。
2. 模块化环境(Node.js/Webpack等)
如果是在Node.js或者用构建工具的项目里,不能直接用CDN的方式,得先安装依赖包:
npm install crypto-js
然后在代码里导入使用:
// CommonJS方式 const CryptoJS = require("crypto-js"); // 或者ES模块方式(如果你的项目支持) // import CryptoJS from "crypto-js"; // 加密解密逻辑 var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase"); var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase"); console.log(decrypted.toString(CryptoJS.enc.Utf8));
内容的提问来源于stack exchange,提问作者PRIYANKA MORE
相关产品推荐
相关产品推荐

