【Laravel】validationエラーの情報はちゃんとObjectで返ってきてるぞ!
Laravelで用意されている通常のvalidation機能
を使うと、フロントエンドでエラーメッセージ等の詳細情報を取得できないのかと思って焦っていた。 そのとき僕は以下のようにエラーハンドリングしていた(つまりしてないw)
.then((data) => { }).catch(err => { console.error(err) })
すると、consoleには以下のように表示された ので、文字列が返ってきているものとばかり思っていた。
解決方法
しかし、
}).catch(err => { console.log(err.response) })
このようにerr.response
をdumpしてみるとエラー情報の詳細がオブジェクトに格納されていることが確認できた。
LaravelというよりもChrome Consoleの仕様でこのような表記になっていたみたい。よく考えたら通常の文字列表示とは違かったので気づけなかったのが悔しい。
【ReactNative】Androidビルドエラー③
エラー
INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package your_app_name signatures do not match the previously installed version; ignoring!
解決方法
adb uninstall your_app_name
参考
【HTML】required属性を無視する一番楽な方法
とあるプロジェクトでフォームの一時保存
機能を実装していたときに見つけた。
submitボタンにformnovalidate属性を付けると、そのボタンを押下して送信された場合はrequired
やmaxlength
などを無視してくれる。
まさに一時保存
機能を実装するときの為にあるような機能。
参考
【ReactNaitve】Androidアプリのpackage名を変える
package名を変える理由
kang.hateblo.jp のようにアプリの引き継ぎ作業をしていた。あーだこーだしていざ、APKファイルをアップロード!というところで
APK または Android App Bundle のパッケージ名は「●●●」とする必要があります。
と言われてしまった。
APKファイルの名前ではなくpackage名を変更しなければならなかったのでメモ。
Androidアプリのpackage名とは
アプリ固有のIDのようなもの。
iOSで言うbundle id
Dropboxの場合はcom.dropbox.android
で、リバースドメイン(ドメインを逆にしたやつ)プラス末尾にandroidをつける的な命名が一般的みたい。(これはiOSのbundle idでも同じ。)
手順(変更箇所)
変更ファイルは app/build.gradle app/src/main/AndroidManifest.xml
の2つ。 app/build.gradleは defaultConfigの中にあるapplicationIdを変更する。こんな感じ。
android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { applicationId "your_package_name" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion }
app/src/main/AndroidManifest.xmlは最上部の
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="your_package_name">
この部分を変更する。
以上!
【ReactNative】Androidの証明書(keystore)を引き継ぐ
概要
基本的には通常通りで変わらない。 kang.hateblo.jp ↑の通りでリリースできるはず。 しかし、過去にリリースしたアプリで使っていた証明書を引き継ぎする必要があったのでその手順をメモ。
流れ
- keystoreを置き換える
- gradle.propertiesを書き換える
1. keystoreを置き換える
過去アプリのkeystoreをもらい、android/app/
に置く。
2. gradle.propertiesを書き換える
置いたkeystoreのファイル名をgradle.properties
のMYAPP_RELEASE_STORE_FILE
キーに書く。
passwordもMYAPP_RELEASE_STORE_PASSWORD``MYAPP_RELEASE_KEY_PASSWORD
に書く。
以上!
誰か助けて
keystoreを無くしちゃった場合とかってアプリの履歴そのままで再発行できたりするのかな。。。
【ReactNative】Androidビルドエラー②
エラー
error: failed linking references. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':react-native-youtube:verifyReleaseResources'. > com.android.ide.common.process.ProcessException: Failed to execute aapt
解決方法
android/build.gradle
に以下を追加
subprojects { afterEvaluate {project -> if (project.hasProperty("android")) { android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion } } } }
参考
追記
build.gradleもといgradle自体を全然理解してなかったのですごくつまづいた。 gradleについては以下が参考になった。 qiita.com
【ReactNative】Androidビルドエラー①
react-native run-android
を実行すると以下のエラーが発生した。
* What went wrong: Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory(). > Could not create service of type FileHasher using BuildSessionScopeServices.createFileSnapshotter().
ググっても解決しなかったので色々探ってみたところ、your_project/android/.gradle
というディレクトリを発見した。
.gitignoreされているのでこれはCacheファイルかな?と考えたときにピンときた。
キャッシュを削除してみてなかっった!!!!
案の定、.gradle
はcacheディレクトリだったので、ディレクトリごと削除して再度react-native run-android
を実行したらBUILD SUCCESSFULの嬉しいレスポンスが返ってきた。
追記
cacheクリアは方法としては
./gradlew clean cleanBuildCache
の実行が普通みたいだが、今回はそれもまた同じエラーになってしまった。
適当に新規プロジェクトを作成してみて、作成段階では.gradle
ディレクトリが存在しなかったので、削除しても自動生成されるだろうと確信したので、ディレクトリごと削除してみたら当たった。