解決方法 Cordova [shell.js: internal error]エラーが出てブラウザで動作確認ができない

Featured image

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 を削除して再インストールしましょう。

  1. 削除
cordova platform rm browser
  1. 追加
cordova platform add browser

上記ログも表示されず正常にブラウザで動作確認することができました。

以上

comments powered by Disqus