obnizのフォーラムは新しいシステムに移行しております。
新しいフォーラムはこちらになります自作パーツライブラリのテンプレートについて
-
マイページから新規作成で「Parts/Util - 自分のパーツライブラリやUtilのためのjsファイル」を選択した時に展開されるテンプレート(ソースコード)が実行時に下記のエラーとなります。
[Error] ReferenceError: Can't find variable: PartsRegistrate (private_work.js:26)
private_work.js
の内容は以下の通り(展開されたテンプレートからクラス名だけを「LED」から「LEDEx」に変更しています)。class LEDEx { constructor() { this.keys = ["anode","cathode"]; this.requiredKeys = ["anode"]; } wired(obniz) { this.obniz = obniz; this.io_anode = obniz.getIO(this.params.anode); if (this.params.cathode) { this.io_cathode = obniz.getIO(this.params.cathode); this.io_cathode.output(false); } } on() { this.io_anode.output(true); } off() { this.io_anode.output(false); }; }; if (PartsRegistrate) { //ここでエラー PartsRegistrate("LEDEx", LEDEx); }
PartsRegistrate()
はstaticメソッドなので、Obniz.
を付けました。if (Obniz.PartsRegistrate) { Obniz.PartsRegistrate("LEDEx", LEDEx); }
しかし、今度は下記のエラー。
[Error] Error: unknown parts [LEDEx] Parts — obniz.js:8168 wired — obniz.js:8174 : :
PartsRegistrate()
内で、第2引数arg1
の型がfunction
の場合を考慮していないことが原因では?とりあえず、テンプレートに
info()
の実装を追加して、PartsRegistrate()
呼び出しの引数を変えました。: : static info() { return { name: 'LEDEx', }; } : : if (Obniz.PartsRegistrate) { Obniz.PartsRegistrate(LEDEx); }
-
@nak435 ご連絡ありがとうございます。
テンプレートが古いobniz.js対応のままだったのが原因でした。
修正しました。partsregistrateも入れようかと思ったのですが、
https://obniz.io/doc/lessons_newpartsで、partsregistrateは自分のプログラム内で行うことにしているので、削除するのみにしました。