プログラミング言語
jQuery:
・ Bootstrap datepickerを使うにはjQueryが必要だが、どうもjQueryの関数が認識されない。結論としてjQueryのライブラリを最初に読ますことで解決(2023.2.25)。参考
Bootstrap:
・ Bootstrapのpagination等の見た目がおかしくなる症状が出たが、burma読み込みをやめたところ正常に表示されるようになる。burmaのコードはBootstrapに変更(2023.3.3)。
Angular:
- 配列は宣言するだけでは領域が確保されないので値が代入されない。(2020.8.2)
→ =[] を宣言文に入れる。 check: boolean | any[] = [pageSize]
→配列をコピーする際は.mapにてコピーする。this.contact = this.contacs.map((contact)=>{return contact}); - node_modules/@angular/material/index.d.ts’ is not a module. import { MatCheckboxModule } from ‘@angular/material’;
→Angular 9より仕様が変わり@angular/material/より下の階層まで指定する必要がある。 - http.get().pipe(map(response => {return response.json() as Contact[]});において、Property ‘json’ does not exist on type ‘unknown’のエラ発生
→Angular 5.0.0 で @angular/http が非推奨 となり、それに伴い@angular/http では json() でパースする必要があったのが@angular/common/http では不要 となる。
→従って、app.module.tsにて
import { HttpClientModule } from ‘@angular/common/http’;
を用い、またコンポーネントにおいて.json()をカットすることで上記は解決。 - Module not found: Error: Can’t resolve ‘core-js/es6/reflect’
→Angular 8.0(=core-js version 3.0)になってcore-js/es6 or core-js/es7 は動作しなくなった模様。
→上記はpolyfills.tsにてインポートされているため、polyfills.tsを修正することで解決。 - 表示されるべき箇所が表示されない。
⇒angular 9で仕様が変わったようで、ng add @angular/localizeをすることで解決。
⇒package.jsonに追加されると供に、polyfils.tsにも以下がインポートされる。
import ‘@angular/localize/init’; - ng build –prodをしてプロダクトベースを動かしたところ、Failed to load resource: the server responded with a status of 404 のエラが出て動かず。どうやらファビコンの読み込みが上手く行かないのが要因のようなので、index.htmlにおける、link rel=”icon” type=”image/x-icon” href=”favicon.ico” のところでhref=””に変更したところエラが解消。
- Service Worker、PWA関連
- 公式HPに従いPWAを設定したもののService Workerがオフラインだと動作しなかったが、これで解決
- localでは動作するがheroku環境ではservice workerが起動しない。この記事を試したが上手くいかず、このブログをみて自分のコードと比べるとng build –prodの–prodが無い事が判ったので、package.jsonを修正したところやっと上手く動作するようになった。
⇒どうもこの記事によると、ビルドにはdev用と本番用の2種類があり、単にng buildの場合はdev環境が採択されるためenvironment.tsの設定ファイルが引用され、production:falseとなっていることからangular.jsonのproductionで定義されているserviceWorkerのonスイッチが設定されずservice workerが起動しなかった模様(–prodがあるとenvironment.prod.tsが読み込まれる)。app.module.tsにおいても、ServiceWorkerModule.register(‘ngsw-worker.js’, {
enabled: environment.production,
registrationStrategy: ‘registerWhenStable:30000’
})となっており、–prodが無い⇒environment.prod.tsが読み込まれない⇒environment.productionがfalseのまま で動作しない状態となっていたと考えられる(2022.3.3)。 - 自分が作成したwords-authにおいて、スマホからアクセスするとリスト表示まで時間を要する。PCにてf12で見てみると、Service Workerは動いているようには見れる。以下2点を試行。2023.1.29
①firabaseの設定変更
⇒このページを見て、セッション管理をNONE⇒LOCALに変更。
②ngsw-config.jsonの変更
⇒このページを見て、apiアクセス時用のスコープ設定が必要にも思えたのでdataGroupsに/及び/apiを追加。
2023.2.12追記:上記でだいぶ早くはなったものの、まだ途中でストップしてしまう箇所があったので調査したところ、dataGrupsのtimeoutを10s⇒3sにすることで更に解消。timeoutはネットから反応が無いときにキャッシュを使用するまでの時間を設定しているようなので、これを短くすれば当然のことながらレスポンスはよくなる。参考
Node.js、npm、Express等:
- package.jsonのバージョン設定を変えると治ることが多々ある。
- バージョン相互依存の関係でnpm installが上手く行かない場合は、一旦node_modules及びpackage.jsonを削除の上、npm initでpackage.jsinを作った上でpackage.jsonに記載されているパッケージをnpm installする。
また、バージョン範囲を指定される場合は以下で解決。
An サーバandled exception occurred: The Angular Compiler requires TypeScript >=4.0.0 and <4.2.0 but 4. 2.3 was found instead.
⇒npm install typescript@’>==4.0.0 - VSCodeにて.toPromiseが二重線表示される。
→RxJS8において.toPromise()が使えなくなったことが原因。
MongoDB:
- server.jsからmongodbへpostしようとするとエラが出て、その後herokuがスタックするという事象が続く(レコード追加は出来ている)。色々とコードを見ていると、
res.status(201).json(doc.ops[0]);
あたりが怪しそうで、これを見ても特段opsについて言及がなかったことから、.ops[0]をカットしたところエラが出なくなった(2022.4.3)
Python:
- ERROR: Could not install packages due to an OSError: [WinError 5] アクセスが拒否されました。
⇒pip install の最後に–userを付けると上手くいった(参考)。
Python(Django):
- OperationalError: no such column idエラー
⇒sqlite3.dbを削除して解決 https://teratail.com/questions/87239 - slugを入れたらエラー
⇒コメント内()の{% %}で表現している箇所もdjangoが文法チェックしており、そこの文法エラで引っ掛かる。コメント内の文法も修正して解決。(若しくは{% commentでDjango上もコメントアウトするでもOKと思われる)2023.1.23
⇒views.pyのparamsにテンプレートで参照するパラメータがセット漏れていた為、セットして解決(2023.4.23)。全く同じ理由でエラ、第1パラメータに注目し第2パラメータを見逃した為2日要したが解決(2023.7.16)。 - admin.pyにモデルを登録しているにも関わらず、admin画面で表示されないモデルがある。
⇒models.pyの該当モデルの定義において、☓☓だったので削除したら解決(2023.9)。
サーバ関連
IIS:
<以下、Django関連>
- ローカルでIISにデプロイしようとした際に、アプリでトップ画面は出るが、そこから先に進むと
Not Found
The requested resource was not found on this server.
が出る
⇒settings.pyのALLOWED_HOSTS = [“localhost”]について、’127.0.0.1’も追加したところ何故か解決(2023.9.10)
※BAD Request(400)となった場合も上記と同様の対処で解決(2024.3.16)https://stackoverflow.com/questions/19875789/django-gives-bad-request-400-when-debug-false - Djangoを動かそうとすると、「FastCGI プロセスが予期せずに終了しました」というエラーが出て動かず。
⇒最終的にこのページを参考にPythonをカスタムインストールすることで解決(Install for all usersにチェックをいれるのがポイント)。 - ⇒上記方法以外にも、pythonがインストールされているフォルダ(C:UsersAppDataLocalProgramsPython )にiis_iusrsを追加する方法でもOK(参考)。
- データを更新しようとすると、500エラー+データ保存できない。
⇒Pythonコードが保管されているフォルダに対して、iis_iusrsに上書き権限を与えて解決。 - 以下エラが発生2023.8.20
HTTP エラー 500.19 – Internal Server Error
ページに関連する構成データが無効であるため、要求されたページにアクセスできません。
エラー コード 0x80070021
構成エラー この構成セクションをこのパスで使用できません。
この問題は、親レベルでセクションがロックされているときに発生します。
ロック状態は既定で設定されているか (overrideModeDefault=”Deny”)、
または overrideMode=”Deny” もしくは従来の allowOverride=”false”
を含んだ場所タグによって明示的に設定されます。
⇒wfastcgiを利用するためのロック解除及びwfastcgi-enable を実施していなかったことが原因。 - デフォルトアプリ(ロケットのやつ)をIISにデプロイしたが、not foundになる(2023.9月)。
⇒settings.pyにてdebug=falseにしていたが、ロケットのサイトについてはdebug=trueのままでないとIISでも見れない模様(DjangoをIISにデプロイしているブログ等見ると、IISで動作しているときもトップ画面でdebug=trueとなっている為) - 家のパソコンでDjangoをデプロイして動かすと、何故か静的ファイル(CSS,Bootstrap等)が読み込めない。結局、collectstaticで作成した静的フォルダ(static)にIUSRを追加することで解決(https://tex2e.github.io/blog/windows/iis-401-3-unauthorized)。
※数日悩んで上手くいかず子供がどうしたん?と聞いてきたので話したら5分くらいで解決してくれた(2024.3.16)。
リポジトリ管理
Git & GitHub:
- git push origin masterしようとしたら、メールアドレスがプライベート設定のためNGとなる。
⇒一先ず登録メールを公開設定に。(2021.6.27追記)この方法で回避できる模様。 - リモートとローカルでコンフリクトが発生した場合
⇒例えばgithubでブラウザ上で変更し、一方でローカルでコード修正し、pushしようとした場合にコンフリクトエラでpushが出来ない。このようなケースの場合は、一旦git pullしてリモートの修正内容をローカルに反映した後にgit pushするとちゃんとアップされる。※参考
>git fetch origin
>git merge origin YOUR_BRANCH_NAME
⇒但し、例えばローカルにある古いコードを修正してpushしようとした場合、リモートの履歴と一致しないことからpushできないケースがある。この時は上記手順だと上手く行かないので、以下の何れかの方法で対応する。
①>git fetch origin master
>git reset –hard origin/master ←ワーキングツリーの状態を完全に破棄 ※参考
②git push -f origin masterで強制的に上書きする。※参考。
但し、②でやるとgit hubの過去のcommitが消えてしまうので要注意(2022.4)。
仮想化
Docker:
・コンテナ作成の際に、–collation-server=の後にスペースが入るとエラとなる。
docker run –name mysql000ex13 -dit –net=redmine000net2 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=redmine000db -e MYSQL_USER=redmine000kun -e MYSQL_PASSWORD=rkunpass mysql –character-set-server=utf8mb4 –collation-server= utf8mb4_unicode_ci –default-authentication-plugin=mysql_native_password
クラウド/API
Replit:
- ALLOWED_HOSTSにホストを追加すると動く。
- main.pyが起動してエラとなる場合は、起動時にpython3 manage.py runserver 0.0.0.0:3000を聞いてくるのでこちらを選択すればOK。そうすると、.replitもrun = “python3 manage.py runserver 0.0.0.0:3000″となる。
- Django
- Djangoのテンプレートを改変して作っていると、SECURITY_KEYについての警告が出てくる時があるので、その時はReplitの左側メニューの「Secrets」にてkeyとvalueを追加すると上手くいった。
- プログラムを修正しても上手く動かない時に、ブラウザのキャッシュをクリアしたら上手く動作したケースあり。
HEROKU:
- postinstallを記述
- package.jsonのパッケージ名と、componentのパッケージ名で大文字・小文字で食い違っている。
→componentにおいてimport {} from ‘Rxjs’となっていたので、’rxjs’に変更したところOKとなる(ローカル環境では特にエラとはならなかったが・・)
Render:
・Herokuから移植したところ、DBアクセスが2回目から不可となる(リプライ無し)。プログラム自体は問題ないので、あとはPaaS自体の特性?が原因かと思い考えたところ、キャッシュが悪さをしているのでは?と思い、Manual Deployより「Clear build cache」にてデプロイしたところ上手く動くようになった。この記事にもHerokuからRenderに移行して同様の事象にぶち当たって困り、同じ方法で解決した旨の記載あり。
EC2:
- node server.js などで起動したプロセスが残った場合、該当プロセスを削除する方法(参考)
ps -e | grep node
sudo kill -9 xxxx(プロセス番号) - EC2上で`Django+nginx+gunicornで動かそうとするとエラとなる2023.6.1
① プロジェクト名とその中のメインフォルダ名が不一致だったため、名前を統一(親のフォルダを変更)
② sudo systemctl status app.serviceを実施してもエラとなっていたので、このページを参考にserviceファイル内のExecStart部分を変更したところそのエラは出なくなった(gunicornのプログラム本体の場所をwhich gunicornで確認し、それベースでExecStart部分を修正)
⇒gunicornがインストールされているべき.venvのパーミッションの関係で.venv配下にインストールできてなかったことが判明したので、.venvのchownをrootからubuntuに変更したら解決。2023.6
上記を実施してもアプリのURLアクセスすると404エラとなるので以下をトライ。
但し現時点(2023.6.25)でまだ解決できておらず。
⇒最終的に/etc/nginx/nginx.confにおいて、
include /etc/nginx/sites-enabled/;
の行をマスキング(#)することでdefaultファイルの読込みを無くすことで解決。2023.7.8 - </etc/nginx>
- nginx.conf
⇒何故か急に502 Bad gatewayのエラとなる。このページによるとアップストリーム接続でエラとなっているとのことだったので、nginx.confにて
include /etc/nginx/conf.d/.conf;
include /etc/nginx/sites-enabled/;
をコメントアウトしたのをやめたところ復活した。2023.6.17 - conf.d/アプリ名.conf(バーチャルサーバー)
⇒Nginx単体で動かそうとしたらエラとなる。sudo nginx -tでもダメ。server_nameをURL名からIPアドレスに変更したところOKとなった。2023.6.11
その後、server_nameについてこのページを参考にドメイン名に変更してみたが(2023.6.25) 、再度調子がNginxが接続できなくなったのでIPアドレスに戻して接続できるようになった(2023.7.1)。
⇒listenについては従来のポート番号のみ(80)からIPアドレス:80に変更してsudo systemctl restart nginxしたらエラとなってしまったので元に戻す。2023.6.25
⇒アプリのURL接続だと404エラが続いているので/var/log/nginxを調べたところ、error.logにて
connect() to unix:/home/ubuntu/app/app.sock failed (13: Permission denied)
が出ていた。この記事を参考に/etc/nginx/nginx.confのuserをrootに変更してsystemctl restartしたところpermission deniedのエラは出なくなった2023.6.24。
- nginx.conf
- </etc/systemd/system>
- </home/ubuntu>
- .env & settings.py
.envファイルをsettings.pyにて読み込むプログラムとしていたが、.envで環境変数 = ‘xxxx’と書いていたのを、環境変数=xxxxに変更(スペースをカットし、’‘もカット)したらうまく読み込めた。BASE_DIRについてはどうも調子が悪かったので、もともとのsettings.pyの設定に戻してエラは終息(2023.6.6)。 - settings.py
サーバを稼働させる際にはsettings.pyのALLOWED_HOSTSは空ではダメとのことなので(デフォルトでは空)、このページを参考に記載してみた
- .env & settings.py
- </usr/share/nginx/html>
- <その他>
- システムリブート
色々と触っていたらsudo systemctl start nginx.serviceでエラとなってしまったので、EC2をリブートしたらsudo systemctl status nginx.serviceでもOKとなる。2023.6.17 - runserverでの動作確認
これを参考にpython manage.py runserver 0.0.0.0:8000で動かしてみる。settings.pyのALLOWED_HOSTS[]にもパブリックIPアドレスを’’囲いで入れたうえで、http://パブリックIPアドレス:8000/アプリ名 でアクセスするとようやく表示された。2023.7.5
⇒SSH FSの設定にて”SFTP Sudo Optional”をdefaultにすると解決(2023.6.11)
- システムリブート
Firebase:
- export ‘firestore’ (imported as ‘firebase’) was not found in ‘firebase/app
⇒Firebaseのバージョンが8.0.0以上で 変更あり。以下で解決。
// Before 8.0.0
import * as firebase from ‘firebase/app’
// After 8.0.0
import firebase from ‘firebase/app’ - Authentication: Sign-in methodにて、承認済ドメインを追加。
- AngularFireAuth
⇒AngularFireはver6で仕様が変わった。this.afAuth.auth.onAuthStateChangedでエラ。仕様が変わりauthが不要になりauthを削除することでerror解決(こちらも) - verUpに伴い、AngularFireAuth.currentUser.displayNameが表示されなくなる。displayNameというプロパティが無いとのエラ。⇒AngurlarFireAuthの公式ページを参考に修正。template側にて以下を入れ込み、オブジェクトを一旦userとして受けた後に、プロパティ(=displayName)を表示させることで解決。
*ngIf=”auth.user | async as user”
{{ user.displayName }}!
・・・省略・・・
⇒その後、ng build –prodでプロダクトファイルを作成したところ、user.displayNameのところでエラとなり先に進まず(unknown=user にはdisplayNameがありません とのエラ)。上記AngularFireAuthはAngularは12ベースとなっており、12ベースからはモジュールは@angular/fire/compat と”compat”というディレクトリ配下のものを用いるようになっていることから11ベースでのバグが解消された可能性があると思いVer12にUpしたところ解消した(それまではVSCode上でもuserはunknownと警告出ていたが、今度は出なくなった。2021.10.17) - VPS(EC2等)からアクセスする場合は、Sing-in method⇒Authorized domainsにてEC2等のドメインを追加する必要あり(2021.8)
デバック時の注意点
ローカルでバック時:
- ブラウザ→F12でデバッグモードでエラを確認すること
- エディタ等が開いている時にnpm installなどをすると、エラとなる場合がある。
- herokuの環境変数をserver.jsに記述すること。
- proxy.conf.jsonのポート番号を必要に応じて修正する。
コメントを残す