Cordovaでハイブリッドアプリを作成しています。
都度 AndroidやiOS端末にインストールして動作確認すると時間もかかるので、実装初期段階ではブラウザで動作確認をしています。
Google Chromeの検証ツールでデバッグもできるし。
てなことで
cordova serve browser
or
cordova emulate browser
を入力しブラウザで動作確認をしていました。
ある日git操作していて余計なファイルが散乱していたのでgit cleanコマンドで不要ファイルを削除しました。
するとその後からコマンドを入力しても以下エラーメッセージが表示されて、ブラウザで動作確認することができなくなりました。
エラーメッセージ 見出しへのリンク
〜〜〜〜〜〜〜〜
Running "cordova_build_debug:wp8" (cordova_build_debug) task
skip - cordova build already called.
Done.
*** End grunt ***
shell.js: internal error
TypeError: Cannot use 'in' operator to search for 'length' in undefined
at Object._cp (/Users/~~~~~~~/.nodebrew/node/v4.5.0/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/src/cp.js:122:26)
at Object.cp (/Users/~~~~~~~/.nodebrew/node/v4.5.0/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/src/common.js:186:23)
at PlatformApiPoly.prepare (/Users/~~~~~~~/.nodebrew/node/v4.5.0/lib/node_modules/cordova/node_modules/cordova-lib/src/platforms/PlatformApiPoly.js:192:15)
at /Users/~~~~~~~/.nodebrew/node/v4.5.0/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/prepare.js:103:32
at _fulfilled (/Users/~~~~~~~/.nodebrew/node/v4.5.0/lib/node_modules/cordova/node_modules/q/q.js:787:54)
at self.promiseDispatch.done (/Users/~~~~~~~/.nodebrew/node/v4.5.0/lib/node_modules/cordova/node_modules/q/q.js:816:30)
at Promise.promise.promiseDispatch (/Users/~~~~~~~/.nodebrew/node/v4.5.0/lib/node_modules/cordova/node_modules/q/q.js:749:13)
at /Users/~~~~~~~/.nodebrew/node/v4.5.0/lib/node_modules/cordova/node_modules/q/q.js:810:14
at flush (/Users/~~~~~~~/.nodebrew/node/v4.5.0/lib/node_modules/cordova/node_modules/q/q.js:108:17)
at nextTickCallbackWith0Args (node.js:420:9)
browserプラットフォームがあるか以下コマンドで確認しても存在しています。
cordova platform -l
解決方法 見出しへのリンク
そんな時はインストール済みのプラットフォーム browserを削除して再インストールしましょう。
- 削除
cordova platform rm browser
- 追加
cordova platform add browser
上記ログも表示されず正常にブラウザで動作確認することができました。
以上