かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

2022-01-01から1年間の記事一覧

Express GraphQL サーバーから返すエラーに独自フィールドを追加したい

Express (TypeScript) で作成した GraphQL サーバーがエラーを返す際に message 以外の独自フィールドを追加してみたメモ express@4.18.1 graphql@15.8.0 express-graphql@0.12.0 typescript@4.7.2 Express GraphQL サーバー Mutation で username を引数に…

初めての GraphQL。Code Generator で型を生成するまでのメモ

GraphQL Code Generator で型を生成できるまでのメモ。千里の道も一歩から!

Node.js Express のレスポンスで Unhandled Promise Rejection エラーが発生

✗ res.json({ …data }).sendStatus(200) ○ res.status(200).json({ …data })

TypeScript default import にハマる

default import と `* as` を使った namespace import な default import とで CommonJS のモジュールのインポートのされ方が異なる。

AWS CDK で作った Lambda に .env ファイルで環境変数を設定したい

`environment` オブジェクトでLambdaの環境変数が設定できる。dotenv を使えば .env ファイルから環境変数を埋め込むことができた

AWS CDK で TypeScript な Lambda をデプロイしたい

初めての AWS CDK です。AWS 関連は経験がまだ全然なくやったことのログ的なエントリーとなります。 AWS CDK って何? AWS Cloud Development Kit (AWS CDK) は、使い慣れたプログラミング言語を使用してクラウドアプリケーションリソースを定義するためのオ…

AWS CLI でユーザーを切り替える方法のメモ

AWS

AWS なんもわからん…

Vite + React のプロジェクトでは require が使えない? Uncaught ReferenceError: require is not defined

Vite の DEV モードはネイティブESMを利用しているので CommonJS の require は使えない。代わりに import や Dynamic import を使えばOK

今更の React 18 ReactDOM の render の使い方が変わった

React v18 では `ReactDOM.render` ではなく `createRoot` を使って root オブジェクトを作成する ``` import { createRoot } from 'react-dom/client'; const root = createRoot(document.getElementById('app')!); root.render(); ```

React の再レンダリングについてのメモ

props を受け取る子コンポーネントは React.memo した上で props で渡される関数やオブジェクトが useCallback, useMemo でメモ化されてないと親コンポーネントの再描画時に再描画される。 依存関係がないコンポーネントはラッパーコンポーネントを作り chil…

今更の React v18 : children の扱いが変わった (TypeScript)

React v18 では暗黙的に props に含まれていた `children` は、使用するなら明示的に props の型を定義する必要がある。`React.VFC` は `React.FC` と同じになったので非推奨になった。

Vite + React (TypeScript) のプロジェクトに ESLint と Prettier を導入する。

前回までのあらすじ。Vite で React (TypeScript) のプロジェクトを作ってパスエイリアスの設定をいい感じにしました 今回はいつもの ESLint と Prettier を導入します。結論から言えば VIte だからという事は特になく、`create-react-app` で作成したプロジ…

Vite + React で path alias を使いたい!

`vite-tsconfig-paths` プラグインを使うのが簡単でオススメ! `tsconfig.json` にパスエイリアスの設定を書いて、`vite.config.ts` にはプラグインを読み込ませるだけにできるのでパスエイリアスの設定が一元化できます。

今更の Vite で React + TypeScript のプロジェクト作ってみた

`npm create vite@latest ` コマンドを実行すれば CLI で React + TypeScript なプロジェクトがサクッと作れてすごく凄い!!

JavaScript ファイル名 (文字列) から拡張子を取得したい

拡張子を含むファイル名の文字列から、拡張子とか拡張子を除いたファイル名を取得する方法のメモ 拡張子の始まりの位置を特定すれば拡張子とファイル名に分解できる 拡張子とは何かを考える 拡張子は . から始まる 文字列の一番最後に出現する . 以降が拡張…

Sass の変数で CSS のカスタムプロパティ(変数)を定義したい

Sass (SCSS) を使って CSS のカスタムプロパティ (変数) を定義するときのメモ Sass の変数を #{} で囲ってあげればOK $textColor: #000; $backgroundColor: #FFF; // カスタムプロパティを定義 :root { --text-color: #{$textColor}; --background-color: #…

CSS 今更のダークモード入門

ダークモード…やってこなかったので今更の入門したのでメモ。 prefers-color-scheme を使う prefers-color-scheme をメディアクエリの中で使用することでデバイスのダークモード/ライトモードの設定を識別できます。 light ... ユーザーがシステムに、明色の…

Docker コンテナ内の MySQL にコンテナ外からアクセスできないにハマる ERROR 1045 (28000): Access denied

docker-compose で作成した MySQL にコンテナ外から mysql コマンドでアクセスしようとしたら Access denied になるにハマったのメモ。※ 本エントリーは経過と事象のメモで詳しく調べてはいません。 環境 Mac OS 11.6 Docker desktop 4.5.0 MySQL 8.0.28 (Ho…

GitHub コマンドラインでパスワード認証がエラーになった

ある組織のリポジトリで開発環境を作っていて submodule が設定されていたので初期化しようとしたら GitHub のパスワードを聞かれてエラーになったのでメモ $ git submodule update --init Submodule 'tools/common' (https://github.com/ORG_NAME/REPO) reg…

TypeScript JEST 引数を取る関数のエラーになる場合のテストにハマったメモ

JEST で引数を取る関数のエラーの発生をテストする場合は expect 内で関数が実行されるように、テストする関数を無記名関数などでラップする必要がある

React TypeScript children の型のメモ

React の children の型は React.ReactNode が JSX.Element を内包しているので React.ReactNode を使えば良さそう

React TypeScript いつも使う設定のボイラーテンプレート作った

毎回 ESLint と Prettier の設定書いて、パスエイリアスの設定して、なんやかんや設定して…とメンドーなので create-react-app --template typescript ベースでゆるゆるな自分用ボイラーテンプレート作りました。 ボイラーテンプレート やったこと ESLint は…

JavaScript よくあるランダムな文字列を生成するやつのメモ

ハンズオンとかチュートリアルでよく出てくる欄ラムな文字列を作る処理をちゃんとみてみようと思った export const getRandomString = (n: number): string => { const S = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; return Array…

TypeScript interface のプロパティを引数に取る関数を定義したい

例えば次ようなサインアップフォームのフィールドの値を引数に取るバリデーションを行う関数あるとして、この関数の型を別途定義したい interface SignUp { username: string; email: string; password: string; } const validation = ({ username, email, p…

React Material UI テキストフィールドを readonly にしたい

Material UI の <TextField /> コンポーネントは出力時にいい感じに div で囲ってくれるからか、直接 readonly 属性を渡しても設定されなかった。 @mui/material@5.2.7 NG: <TextField /> に readonly 属性を渡しても readonly な状態にはならない disabled は効くけど readonly は効か</textfield></textfield>…

React TypeScript Material UI のインラインスタイルで型エラーにハマる

Material ui の Modal のサンプルを TypeScript にコピペしたら JSX でインラインスタイルの指定に CSS のオブジェクトを渡している箇所で形エラーになってしまった const style = { // インラインスタイルに使う CSS }; const MyComponent = () => { return <div style={style} /></div>…

React + TypeScript import 順をキレイにしたい

eslint-plugin-unused-imports と eslint-plugin-import プラグインを使うといい感じにできる