- 1. VS Remote-Containers を使用した簡単な Astro 環境
- 2. parcelでライブラリをbuildするときにnode_modulesが含まれずError: Cannot find module…と表示される問題の解決法
- 3. REST APIって何?
- 4. Nodejsのバージョンを上げたら`error:0308010C:digital envelope routines::unsupported`が出てしまう
- 5. IBM Cloud Code Engine に React + Express アプリケーションをデプロイしてみる
- 6. Node.js環境構築
- 7. Firebase CloudFunctionsでデプロイしても反映されないなと思った時に確認すること
- 8. protocでprotobufをコンパイルして生成されるコードを利用して、Node.jsでgRPC通信をやってみた
- 9. Node.js+Expressのサービスをrender.comでデプロイしようとしたらちょっとハマった話
- 10. 異なるバージョンのNode.jsを同居させて切り替えて使う
- 11. libSquooshを使って画像一括変換
- 12. Deta.shの無料枠が廃止になったらCyclic.shへ移行する
- 13. Node.jsでCLIの引数を解析する方法、node:util.parseArgsのご紹介も!
- 14. Error: listen EADDRINUSEの対処方法
- 15. Socket.IOサーバーと、UnityのWebSocketライブラリとでやりとり
- 16. Node.js で AWS Elemental Media Convert を使って動画変換してみた
- 17. 【AWS IAM認可】署名バージョン4で署名する処理手順 for Nodejs
- 18. Node.js × Sequelzie × MySQL使用時にJavaScript heap out of memoryエラーが発生した際の解決方法
- 19. テーブル結合時にSequelizeのfindOneメソッドが発行するSQL(リレーションシップ・Where句ごと)
- 20. JavaScript/Node.jsでのバイナリデータ処理
VS Remote-Containers を使用した簡単な Astro 環境
VS リモート コンテナーを使用してさまざまな言語をテストし始めましたが、これが Astro.build の新しい開発環境をセットアップする簡単な方法であることがわかりました。
### ステップ 1 – フォルダーを作成する
“`
mkdir astrodevcd astrodev
“`
`astrodev` フォルダーの中で、`.devcontainer` という名前の新しいサブフォルダーを作成します。「Dockerfile」を作成します.
“`dockerfile
FROM node:16-alpineWORKDIR /app
RUN apk update && \
apk add git && \
apk add opensshENV HOST 0.0.0.0
EXPOSE 3000“`
devcontainer.json」という名前の新しいファイルを作成します
“`json
{
“name”:”astro”,
“build”: { “dockerfile”: “Dockerfile” },
“forwardP
parcelでライブラリをbuildするときにnode_modulesが含まれずError: Cannot find module…と表示される問題の解決法
# Parcelでライブラリをビルドする
## 最近のtypescript
だいたいビルドはparcelに任せてます。webpackの設定が面倒くさいので。まあ一度環境をつくってしまえばなんとかなるんですけど。## parcelでライブラリモードでbuildするとnode_modulesが含まれない
ので、tsファイルをビルドして、他のディレクトリに移動してからnodeで起動しようとするとmoduleが見つかりませんというエラーが出る。例としてrambdaを入れてビルドした場合。
“`sh
Error: Cannot find module ‘rambda’
“`## ライブラリモードはnode_modulesが基本的には含まれないのだ
> Determines whether to bundle node_modules or treat them as external. The default is true for browser targets, and false for library targets. Possible values are:簡単に訳す
REST APIって何?
# 結論
#### REST APIとは
RESTのルールに従ったAPIのことです。# そもそもRESTとは何か
webサービス設計思想の1つ
Twiiterなどのアプリを作るときにどういう手段で作っていくかを考える思想の1つ# REST4大設計のルール
※RESTは4つ以上ありますが今回は一般的な4つを解説します。
このルールを満たしたサービスがRESTfullと言われています。#### 1.アドレス可能性(Addressability)
#### 2.統一インターフェース(Uniform Interface)
#### 3.ステートレス性(Stateless)
#### 4.接続性(Connectability)## 1.アドレス可能性(Addressability)
クライアントが送ったURL(アドレス)をサーバーが理解しそれをクライアント返していること。例:
ユーザーがQiitaのマイページのボタンを押したときにクライアント側からユーザーがマイページが見たいですといった情報がサーバーに送られる。
そしてサーバーが分かりましたとマイページの画面がクライアント
Nodejsのバージョンを上げたら`error:0308010C:digital envelope routines::unsupported`が出てしまう
# はじめに
最近はRailsしか触っていない筆者です。
本業の大きなプロジェクトが落ち着き、ほっとしております:smile:さて今回は、Nodejsのバージョンを上げることで、Gatsbyのプロジェクトが`error:0308010C:digital envelope routines::unsupported`で怒られてしまったので、その暫定対応について記載します。
とりあえず、動かした方はこちらが参考になれば幸いです。
# 前提
– Nodejsのバージョン: 18.7.0
– npmのバージョン: 8.15.0# 結論
`openssl-legacy-provider`オプションを使用する。私は、package.jsonを編集し、以下のようにしました。
“`diff
“scripts”: {
– “develop”: “gatsby develop”,
+ “develop”: “NODE_OPTIONS=’–openssl-legacy-provider’ gatsby develop”,
}
“`原因は、Nodejsnのバージ
IBM Cloud Code Engine に React + Express アプリケーションをデプロイしてみる
# はじめに
前回の記事でIBM Cloud Code EngineにPlay Framework/Scalaアプリケーションをデプロイする方法を紹介しましたが、今回は同様のプロセスをNode.jsベースのアプリケーションでも行なってみます。このNode.jsアプリケーションはフロントエンドにReactを用い、バックエンドにはExpressを使ってサーバーを構築します。プロダクションへのデプロイ時にはバックエンドのExpressサーバーが両方ともホストすることになります。(ネット上にこの構成でクラウド環境へのデプロイまでカバーしている記事があまり多くはなかったので記述しておくという意味合いもあります。)
# Expressサーバーの構築
Expressサーバーを構築するのに`express-generator`を使用します。
“`shell
$ npm i -g express-generator
“`早速Expressサーバーの雛形を作成します。
“`shell
$ express react-express
“`最終的にフロントエンドはReactで書くこと
Node.js環境構築
# Node.jsって言語なの?
Node.jsは言語ではなくJavaScriptを使ったサーバサイドの設計手法のようなもの# 使うメリット
Node.jsはJavaScriptを学ぶだけでクライアントとサーバーも作ることができることができる。
非同期処理が得意なのでラインやチャットなどのリアルタイムアプリに向いている。# Node.jsの環境構築
ここからNode.jsの環境構築をまとめます。### nodeインストール
まずは公式ホームページからNode.jsをインストールしましょう。
[Node.js公式](https://nodejs.org/ja/)
nodebrewを使ったやり方の方が望ましいですが今回は公式ページからダウンロードします。![スクリーンショット 2022-09-03 11.20.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577311/e80e9e93-c27d-1e84-082d-a0eec149dd79.png)
### npmを使ってモジュール
Firebase CloudFunctionsでデプロイしても反映されないなと思った時に確認すること
Firebase CloudFunctionsを使っていて
`firebase deploy`とか`firebase deploy –only functions`とかをしてデプロイがちゃんとできているはずなのに,なぜか古い関数のままで実行されていて,変更した新しいコードが反映されないなーと思ったときに確認したい内容.### 1. そもそもターゲットのプロジェクトはあってますか
開発環境と本番環境で切り分けてる人は切替え忘れてるかもね.
`firebase use`で確認できます### 2. ちゃんとビルドしてますか
デプロイする前に`npm run build`されるようになっていますか?
デフォルト状態だと`firebase.json`で`predeploy`として定義してくれてるけど,何かの拍子に変えてしまったりしてないかな### 3. エントリーポイントのパスが変わってませんか
`package.json`をみてください.
デフォルトだと
“`json
…
…
“main”: “lib/index.js”,
…
…
“`
になっていると思うけ
protocでprotobufをコンパイルして生成されるコードを利用して、Node.jsでgRPC通信をやってみた
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/nb9cc5208c70c
**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です。**
## 補足
ソースコード全体は以下。https://github.com/yuta-katayama-23/node-grpc/commit/b083ceeca6d20cff33249c0dd6959e48dbaf264f
Node.js+Expressのサービスをrender.comでデプロイしようとしたらちょっとハマった話
# はじめに
私は,文化祭に向けて音ゲーを作っており,ゲーム本編は動作したのであとはデプロイして展示するだけだったのだが…
事件は起こる。そうだ,**Heroku無料枠廃止**である。今すぐにというわけでは無いものの,文化祭終了後にオープンベータとして一般公開することを考えていたので,とりあえず無料枠が使えそうなPaaSを…と探していたら見つけたのが,そう,[render](https://render.com)である。# とりまデプロイ
### 某日深夜2時
これで出展できるぞ~!あとはデプロイだけや!
まずプルリク立ててmasterブランチにマージしとこ…
んじゃデプロイするか…
### 1時間後…
あー何回やってもデプロイできひんやんけ!どうなっとるんや!
(renderに関する情報を探すも,Node.js+Expressに関する日本語情報は少ない。かと言って深夜三時。英語読む気になれへん)
取り敢えず寝よ…今日劇のリハあんねんな…### 前日
リハ終わったし展示のセッティングするか…それにしても暑いな…
おっと,その前にもう一回試すか
異なるバージョンのNode.jsを同居させて切り替えて使う
昔のプログラムをサクッと確認したいだけなのに、Node.jsのバージョンが合わずにビルドでエラーを吐いてストレス。。。
という状況に陥ったため、
Node.jsのバージョン管理であるnvmをインストールして利用しました。**試した環境**
OS: Windows 11## 通常の方法での最新のNode.jsのインストール
Node.jsのダウンロードページから、Windows用のインストーラー(.msi)が配布されているので、
それを取得し、インストールを行う。
https://nodejs.org/ja/download/### Node.jsが正常にインストールされたかの確認
Windows PowerShellを起動し、以下のコマンドを実行しバージョン情報が表示されれば、成功です。
“`console
PS C:\shell> node -v
v16.17.0
“`## nvmのインストール
こちらも、インストーラー(.exe)が配布されているので、取得しインストールを行う。
https://github.com/coreybutler/nvm-windows
libSquooshを使って画像一括変換
## これ、Webpackである必要なくない?
以前、
https://qiita.com/bananacoffee/items/8c610dc59d34a85ec010
という記事でwebpackを用いて画像変換を行うプログラムを作成したが、
- 画像変換をするだけなのにwebpackさんに出張ってもらう必要なくない?
- ImageMinimizerを経由するため変換効率が悪いという考えと問題に至り、Node.js + libSquooshだけで変換を行えるようにしてみた。
### 利用パッケージ
“`sh
npm install –save-dev @squoosh/lib glob path fs-extra commander
“`### 変換プログラム(convertImage.mjs)
“`js
/**
* 画像一括変換スクリプト
* 参考: https://github.com/GoogleChromeLabs/squoosh/tree/dev/libsquoosh
*
* 実行(例)
* node convertImage.mjs
Deta.shの無料枠が廃止になったらCyclic.shへ移行する
# HerokuのFree Planが終了するらしい(泣)(泣)
https://blog.heroku.com/next-chapter
> Starting November 28, 2022, we plan to stop offering free product plans and plan to start shutting down free dynos and data services. We will be sending out a series of email communications to affected users.2022/11/28までに有料版にアップグレードしてねとのことらしい。
# Cyclic.sh
⇒ [Deta.sh](https://www.deta.sh/) ⇒ [Cyclic.sh](https://www.cyclic.sh/)へ移行したhttps://www.cyclic.sh/
[Cyclic.sh](https://www.cyclic.sh/)は無料で使えるクラウドプラットフォーム。
クレジットカード・電話
Node.jsでCLIの引数を解析する方法、node:util.parseArgsのご紹介も!
はいさい!ちゅらデータぬオースティンやいびーん!
# 概要
CLIで実行するNode.jsのアプリケーションを実行する時に、CLIからアプリケーションに引数を渡して、そしてその渡された引数をアプリケーションで解析する方法を紹介します。
## 必要な知識
この記事を理解するためには、Node.jsを使ってCLIでJavaScriptを実行する知識が必要です。
https://nodejs.dev/en/learn/run-nodejs-scripts-from-the-command-line
## 参考になった記事
https://2ality.com/2022/08/node-util-parseargs.html#more-ways-of-using-long-and-short-options
# `process.argv`を使い、Node.jsアプリケーションでCLI引数を読む
Node.jsのアプリケーションには、`process`のグローバル変数があり、この変数には、環境変数を始めとして、さまざまな便利な情報にアクセスすることができます。
今回、CLI
Error: listen EADDRINUSEの対処方法
##### Error: listen EADDRINUSEの対処方法
“`bash
# 開いているポート(PORT)のプロセスID(PID)を取得する。
lsof -i tcp:PORT
# 取得したプロセスID(PID)のプロセスを終了する。
kill -15 PID # うまくいかなければ kill -9 PID を実行する。
# 開いていたポート(PORT)のプロセスID(PID)がなくなっていることを確認する。
lsof -i tcp:PORT
“`参考: [How to fix Error: listen EADDRINUSE while using NodeJS?](https://stackoverflow.com/questions/9898372/how-to-fix-error-listen-eaddrinuse-while-using-nodejs
)
Socket.IOサーバーと、UnityのWebSocketライブラリとでやりとり
## はじめに
UnityでSocket.IOとの通信で、UnityのC#のバージョンを変えなきゃいけなかったりして、結構詰まってしまったので、そこらへん変えたくないよって時のメモです
ちなみに前回の記事の続きのような感じで書いてます
https://qiita.com/ono-honeycomb/items/359a254fd4c859692472
前提として、インターネットが使える状況ならばクラウドサービス使ったほうが楽だったりします
### 追記
https://github.com/Rocher0724/socket.io-unity
こちらを使うためにSocket.IOのバージョンを `1.7.4` まで落とすと動作します(Known Bug項目に書いてあります)
### 環境と使うもの
* Unity 2021.3.6f1
* .NET Standard2.1
* websocket-sharp
* Node.js v16.15.1
* Socket.IO v4.5.1
* express v4.18.1## Sock
Node.js で AWS Elemental Media Convert を使って動画変換してみた
## 目的
ユーザがiPhone で撮った動画をweb上で再生できるように、mp4フォーマットに変換してみました。## システム構成
![Untitled Diagram.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2821499/6ce38bee-3e5e-843b-7b92-7429ad5b45bf.jpeg)## 構築手順
1. S3 bucket `s3-media-convert` を作成します。(ユーザの動画は S3 の Presigned URL などを使ってこの bucket にアップロードさせます。)
2. node.js の lambda `trigger-media-convert` を作成します。
3. `trigger-media-convert` lambda に トリガーを追加します。
![Screen Shot 2022-08-31 at 16.44.02.png](https://qiita-image-store.s3.ap-northeast-1.
【AWS IAM認可】署名バージョン4で署名する処理手順 for Nodejs
# 前提
– Cognitoが設定済みであること
– API GatewayでAWS IAM認可が設定済みであること
– ログインユーザーのロール(API実行可否)が設定済みであること
– xxxのところは自環境に合わせて設定すること## 下記をインストールする
– @aws-amplify/ui-vue
– aws-amplify
– axios
– vue## 署名のサンプルソース
“` vue:App.vue