nw.jsでcryptoを使用するときは変数名に注意する。

公開:2015-02-15 18:57
更新:2020-02-15 04:37
カテゴリ:nw.js,javascript,three.js,nw.jsでデスクトップアプリを作る

nw.jsでcryptoを使って暗号化されたファイルを復号化しようとした時のこと。下記のようなコードを書いていた。

var crypto = require('crypto');
try {
var decipher = crypto.createDecipher('aes-256-cbc', sfkey);
var decrypto = decipher.update(’(暗号化文字列)’, 'hex', 'utf8');
decrypto += decipher.final('utf8');
} catch (e) {
console.log(e);
}
view raw gistfile1.js hosted with ❤ by GitHub

そうするとcrypto.createDecipher()のところで、そんなメソッドはないと怒られる。調べると「crypto」という名前はnw.jsで予約されており、変数名としては使用してはいけないらしい。


Nodejs crypto not working · Issue #540 · nwjs/nw.js · GitHub

nw.jsというよりも、chromiumがcryptoというオブジェクトを持っているためらしい。これは何をするものなのかはわからないが。


Changes related to node · nwjs/nw.js Wiki · GitHub

ということでこの件で小一時間ほどハマってしまった。