如何在普通 javascript 或基于节点的 javascript 项目中导入 crypto.js
How to import crypto.js in either a vanilla javascript or node based javascript project
我已经(成功地)完成了
npm install --save crypto-js
在当前项目中。它显示在 package.json
:
$grep crypto package.json
"crypto-js": "^4.0.0",
然后在一个本地项目javascript文件中我正在尝试使用它但还没有弄清楚。
已尝试以下操作:
var CryptoJS = require("crypto-js");
在将 aes.js
下载到同一本地目录后,我也尝试使用 import
方法:
<script type="text/javascript" src="aes.js"></script>
这导致:
Uncaught ReferenceError: require is not defined
at my-project-worker.js:1
Uncaught ReferenceError: CryptoJS is not defined
at encrypt (audio-clips-worker.js:168)
at audio-clips-worker.js:235
at Set.forEach (<anonymous>)
at onmessage (audio-clips-worker.js:229)
最后我试着留下一个绝对 url:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
这给出了相同的“CryptoJS 未定义”错误。这里有哪些工作选项 - 缺少或需要以不同方式完成哪些步骤?
适合我。也许您的包裹包含不正确:
https://jsfiddle.net/rLt7haxc/6/
var message = "café";
var key = "something";
var encrypted = CryptoJS.AES.encrypt(message, key);
//equivalent to CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(message), key);
var decrypted = CryptoJS.AES.decrypt(encrypted, key);
$('#1').text("Encrypted: "+encrypted);
$('#2').text("Decrypted: "+decrypted.toString(CryptoJS.enc.Utf8));
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="1"></div>
<div id="2"></div>
npm项目的CodeSandbox演示:
https://codesandbox.io/s/prod-glade-6j2rw
var CryptoJS = require("crypto-js/core");
CryptoJS.AES = require("crypto-js/aes");
var encrypted = CryptoJS.AES.encrypt(message, key);
var decrypted = CryptoJS.AES.decrypt(encrypted, key);
console.log(encrypted, decrypted);
有一个更符合模块标准的CryptoES项目。
“require is not defined”意味着你没有在 nodejs 上下文中 运行ning 它。
要在 vanilla 环境中使用 运行,您只需要包含具有绝对路径的脚本,并将您的 js 更改为不使用 'require',而是像这样使用 'CryptoJS':
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<script>
console.log('whats up!')
console.log('encrypted', CryptoJS.AES.encrypt('themessage', 'thekey'))
</script>
我已经(成功地)完成了
npm install --save crypto-js
在当前项目中。它显示在 package.json
:
$grep crypto package.json
"crypto-js": "^4.0.0",
然后在一个本地项目javascript文件中我正在尝试使用它但还没有弄清楚。 已尝试以下操作:
var CryptoJS = require("crypto-js");
在将 aes.js
下载到同一本地目录后,我也尝试使用 import
方法:
<script type="text/javascript" src="aes.js"></script>
这导致:
Uncaught ReferenceError: require is not defined at my-project-worker.js:1
Uncaught ReferenceError: CryptoJS is not defined
at encrypt (audio-clips-worker.js:168)
at audio-clips-worker.js:235
at Set.forEach (<anonymous>)
at onmessage (audio-clips-worker.js:229)
最后我试着留下一个绝对 url:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
这给出了相同的“CryptoJS 未定义”错误。这里有哪些工作选项 - 缺少或需要以不同方式完成哪些步骤?
适合我。也许您的包裹包含不正确:
https://jsfiddle.net/rLt7haxc/6/
var message = "café";
var key = "something";
var encrypted = CryptoJS.AES.encrypt(message, key);
//equivalent to CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(message), key);
var decrypted = CryptoJS.AES.decrypt(encrypted, key);
$('#1').text("Encrypted: "+encrypted);
$('#2').text("Decrypted: "+decrypted.toString(CryptoJS.enc.Utf8));
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="1"></div>
<div id="2"></div>
npm项目的CodeSandbox演示:
https://codesandbox.io/s/prod-glade-6j2rw
var CryptoJS = require("crypto-js/core");
CryptoJS.AES = require("crypto-js/aes");
var encrypted = CryptoJS.AES.encrypt(message, key);
var decrypted = CryptoJS.AES.decrypt(encrypted, key);
console.log(encrypted, decrypted);
有一个更符合模块标准的CryptoES项目。
“require is not defined”意味着你没有在 nodejs 上下文中 运行ning 它。 要在 vanilla 环境中使用 运行,您只需要包含具有绝对路径的脚本,并将您的 js 更改为不使用 'require',而是像这样使用 'CryptoJS':
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<script>
console.log('whats up!')
console.log('encrypted', CryptoJS.AES.encrypt('themessage', 'thekey'))
</script>