私はJSを3週間前に学び始めたので、簡単なことを見落とすかもしれません。 私は、npmモジュールのperiodic-tableとfacebook-chat-apiを使って、Facebook化学のbot(オランダ語)を作ろうとしています。 周期表に基づくすべての関数は、分子量を得る以外は正常に動作しています。私が分子ではないものを入力すると、他のすべてのケースでこれが起こるのに対し、elseステートメントには行きません。これがケースである:javascriptで/ elseが他に定義されていない場合は
case 'mw':
var regex = /((Uu[a-z]|[A-Z][a-z]?)\d*)/g;
var mol = (commandText.match(regex) || []).join(' ');
if(util.atomicMass != undefined && util.atomicMass(mol) != undefined) {
api.sendMessage("De molaire massa van " + commandText + " is: " + util.atomicMass(mol) + " g/mol", event.threadID)
}
else {
api.sendMessage("Fout, onjuiste opmaak", event.threadID)
}
break;
私もなく、運と、代わりに
if (util == undefined || (util.atomicMass != undefined && util.atomicMass(mol) != undefined)) {
を試してみました。
私が手にエラーがある:
ERR! ERROR in listen --> TypeError: Cannot read property 'atomicMass' of undefined
ERR! ERROR in listen --> at C:\Users\Bd\node_modules\periodic-table\util.js:16:54
私はutil
は、冒頭で定義されていないと、それは既存の分子とうまく動作しますが。ナンセンス入力では、それは私に希望のエラーを与えることはありません。 console.log(util)
は私に{ atomicMass: [Function: atomicMass] }
を与えます。
私の全体のコードは次のとおりです。 http://pastebin.com/6u2bMbXF
それともこれが動作しない理由は、それ自体のutilに何か問題があるだろうか?
編集:
if (typeof util.atomicMass(mol) == "object")
も動作しません。
私はこれが同様に少し生臭いだと思います(EAFP): 'commandText.match(正規表現)|| [] '一致するとnullが返されますが、他の偽の値を返す可能性があります(?) – ippi
正規表現と一致するものを入力してもまだ取得していないものを入力すると、同じエラー。また、正規表現と一致しないものを入力すると、同じエラーが発生します。 – bdbdbd
_ "facebook-chat-api" _このようなことはもうありません... – CBroe