質問するログイン新規登録

Q&A

解決済

1回答

839閲覧

JavaScriptで変数を初期化するとき「TypeError: Cannot set property resCmd of #<Object> which has only a getter」と出る

k._.

総合スコア3

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2023/10/27 07:04

編集2023/10/27 07:19

0

0

前提

javaScriptでエラー時にグローバル変数「resCmd」を初期化するためにundefinedを代入すると「TypeError: Cannot set property resCmd of #<Object> which has only a getter」このようなエラーが出るので解決したい。

これが何のエラーなのか調べてもよく理解ができないため、出来ればどのようなエラーなのか解説もしてもらえると助かります。

発生している問題・エラーメッセージ

TypeError: Cannot set property resCmd of #<Object> which has only a getter

該当のソースコード

main.js

1// グローバル変数定義 2export var resCmd;

処理途中でエラーが出るとinitializeメソッドが呼ばれて初期化処理が始まる。
実際に格納されるデータはbluetoothデバイスからの16進のArrayBufferデータをbyte配列に直し、subStringで切り取ったものが入っています。

ble.js

1import { resCmd } from ./main.js 2 3// 以下bluetoothデバイスからEvent通知を受け取った際の処理 4function onTxCharacteristicValueChanged(event) { 5 6let receivedData = event.target.value; 7 console.log("addressresData",receivedData); 8 9 for(let i = 0; i < receivedData.byteLength; i++){ 10 addressResData += ('00' + receivedData.getUint8(i).toString(16)).slice(-2); 11 } 12 13 let addressNotifiyData = addressResData.toUpperCase(); 14 console.log('addressNotifiyData',addressNotifiyData); 15 16 if(notifiyFlug == 1){ 17 keyDeviceId = addressNotifiyData.substring(26,38); // 応答PDUからキーアドレス取得 18 console.log('keyDeviceId',keyDeviceId); 19 resCmd = addressNotifiyData.substring(22,26); // 応答PDUから応答確認取得 20 console.log('resCmd',resCmd); 21 validation(resCmd); 22 } 23 notifiyFlug += 1; 24}

ble.js

1// エラー処理でグローバル変数を初期化 2function initialize(){ 3 resCmd = undefined; 4567}

すみませんがお力をお貸しください。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

maisumakun

2023/10/27 07:10

・上のコードと下のコードはどのような形で連携させていますか?それもわかるように(import部や、HTMLから呼んでいるならHTMLの<script>も含めて)ご提示ください。
yambejp

2023/10/27 07:10

「export var resCmd;」という記述ではなにをどうしたいかわかりません。
k._.

2023/10/27 07:20

コメントいただきありがとうございます。 必要な部分を追記いたしました。 よろしくお願い致します。。
yambejp

2023/10/27 07:36 編集

そのエラーが再現されるソースを何処かにアップできないですか? ソースの提示が断片的すぎて私の環境で再現ができません
k._.

2023/10/27 07:52

すみません、int32_tさんからのアドバイスで解決できました! わざわざ環境に当てはめてまで検証して頂こうとして本当にありがとうございます!
guest

回答1

0

ベストアンサー

モジュール機能で import した名前に対しては、代入はできません。

インポートした値はエクスポートしたモジュールだけが変更できる

その値を更新するための関数をエクスポートして利用するなどする必要があります。

投稿2023/10/27 07:18

編集2023/10/27 07:46
int32_t

総合スコア22019

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.29%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問