- 1. TerraformでAWS LambdaをNode.js 20へアップグレードする方法
- 2. NestJS でホットリロードを行う
- 3. 【初心者向け】TypeScriptの環境構築
- 4. Node.js環境でパスは合ってるのにモジュールが見つからないというエラー
- 5. Notion APIでNode.jsから日付情報から検索やソート
- 6. Attempted to load @next/swc-win32-ia32-msvc, but an error occurred: A dynamic link library (DLL) initialization routine failed.
- 7. Bitbucket Pipelinesで環境ごとにstepを分ける
- 8. React Native + Node.js+Expo+Xcode+Aodoroid Studio 環境構築
- 9. Node.jsでYouTubeにアップロード済みの動画のタイトルや概要を更新する – GPTに最初嘘つかれた
- 10. Qiita CLIを使う
- 11. Node.jsでYouTubeのプレイリストから動画を削除する
- 12. Node.jsでYouTube再生リストに含まれる動画リストを取得
- 13. Google APIのトークン取得で”このサイトにアクセスできませんlocalhostで接続が拒否されました。”
- 14. GPTのストリーム機能を使いたい方へ(その1)
- 15. BunでESM、CJS両対応のTypeScriptプロジェクトを公開する!
- 16. FetchでPostするときの、headers部分を共用化する方法
- 17. 初心者がnode.js expressでwebAPIを実装してみた。(簡易版)
- 18. 【Volta】node.jsバージョン管理ツールをVoltaに乗り換える【設定手順】
- 19. HuaweiのSiteKit APIでリバースジオコーディングして知り合いの病院の住所を覗いてみる
- 20. 動画ストリーミングをnode.jsで読み込む方法
TerraformでAWS LambdaをNode.js 20へアップグレードする方法
先日AWSから **『[アクションが必要です] AWS Lambda での Node.js 16 のサポート終了について』** というタイトルのメールを受け取ったので、早速アップグレードを試みたのですが、Terraform初心者としてハマるところが多かったので、備忘録としての投稿です。
# 前提
今回の例は、以前Terraformで構築したNode.js 16のAWS Lambdaを、Node.js 20に更新するものです。
またTerraformは当初、1.4.4を使用していました。# LambdaのNode.js Runtimeが更新できない!
AWSからのメールにあった`2024 年 6 月 12 日までに、既存の Node.js 16 の関数を Node.js 20 にアップグレードすることをお勧めします。`の指示に従い、aws_lambda_functionのruntimeを`nodejs16.x`から`nodejs20.x`に変更し、terraformのコマンドを実行したところ…![Upgradeエラー1.png](https://qiita-image-st
NestJS でホットリロードを行う
# はじめに
この記事では、NestJS でホットリロードを行う方法について記載していきます。“`npm run start“` でローカルサーバーを起動して開発をしていると、コードを変更して動作確認をする際、ローカルサーバーを再起動しないと変更が反映されません。そのため、ローカルサーバーを再起動しなくても変更を反映できるようにする方法について記載していきます。
# 方法1:“`npm run start:dev“`
“`npm run start:dev“` でローカルサーバーを起動すると、ホットリロードを行うことができます。:::note
“`package.json“` 内で定義されているように “`start:dev“` の中身は “`nest start –watch“` です。
“`package.json
“start:dev”: “nest start –watch”
“`
:::# 方法2
NestJS のこちらのドキュメントに記載の手順で実施できます。https://docs.nestjs.com/
# 参考
【初心者向け】TypeScriptの環境構築
## はじめに
Node.js上でTypeScriptを動かす環境を構築する際に必要な手順をまとめました。今回はMacOSでの環境構築になるので、WindowsOSを利用している場合はコマンドを適宜読み替えてください。## Node.jsのインストール
TypeScriptは実行する際にTypeScriptコンパイラが必要となり、Node.jsはそれを動作させる際に必要となります。以下のNode.js公式サイトからインストーラーをダウンロードして、それを実行する事でNode.jsのインストールが完了します。
https://nodejs.org/en
基本的には最新バージョンをインストールすれば問題はありませんが、偶数のメジャーバージョンが安定版とされているため、偶数バージョンをインストールすることが望ましいです。
## TypesScriptプロジェクト用のディレクトリ作成
まずは適当な名前でTypeScriptプロジェクト用のディレクトリを作成し、その中に**package.json**を作成します。
“`
$ mkdir practice
$ cd practic
Node.js環境でパスは合ってるのにモジュールが見つからないというエラー
## 環境
– Windows10
– Node.js(v18.18.1)
– Express(v4.18.2)
– React(v18.2.0)## 経緯
– Express環境で、React側と同じ記述を用いてモジュールをインポートしようとしたところ、パスは間違っていないのにモジュールが見つからないというエラーが発生した。### 詳細
– Reactではファイルインポート時に以下の記述でOK。“`react
import { apiHandler } from “test/apiHandler”
import apiHandler from “test/apiHandler”
“`– Node.js(Express)だと以下エラーが発生する。
“`terminal
Error [ERR_MODULE_NOT_FOUND]: Cannot find module ‘C:¥test¥apiHandler’ imported from (インポート先のパス)
at ….
code: ‘ERR_MODULE_NOT_FOUND’
“`## 対処方
Notion APIでNode.jsから日付情報から検索やソート
NotionのAPIを触ってみてます。締め切りが今週中の何か… といった情報を抜き出したいときがあるのですが、その辺のメモです。
## 日付でソート
提出期限などでソートします。
> ![スクリーンショット 2023-12-23 16.02.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/de320c51-bf21-e4ad-789c-7bf39d286edd.png “スクリーンショット 2023-12-23 16.02.44.png”)
“`js
const response = await notion.databases.query({
database_id: dbId,
sorts:[
{
“property”: “提出期限”,
“direction”: “descending”
}
]
});console.log(response);
“`#
Attempted to load @next/swc-win32-ia32-msvc, but an error occurred: A dynamic link library (DLL) initialization routine failed.
## 何のエラー?
32bit版win用のNodeを64bit版winで稼動させようとすると起こるエラー.
## やること
1. 32bit版Nodeをアンインストール
C:\Program Files (x86)\Nodejs のディレクトリを削除
注意:ディレクトリの削除は不可逆な可能性があるので注意してください2. Nodeを再インストール
https://nodejs.org/en/download
64bit版であることを確認してインストール
Bitbucket Pipelinesで環境ごとにstepを分ける
## この記事について
この記事はBitbucket pipelineのymlの設定の中で、環境ごとに自動デプロイする仕組みを解説しています。
今回はReactアプリを使用してs3にアップロードします。## 前提条件
* 前提条件としてS3にバケットが存在すること
* Bitbucketにリポジトリーが存在すること## Bitbucketのリポジトリの設定
### パイプラインの有効化
まずはデプロイ対象のリポジトリの「Repository Setting」 → 「設定」の中にチェックがあるので押して有効にします。
有効にすると「このリポジトリはパイプラインを利用する」という設定が完了します。![スクリーンショット 2023-12-21 11.38.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3338345/909243e6-9207-21d4-efb4-ccc9c8d8874e.png)
## クレデンシャルの設定
次に環境ごとのクレデンシャルの設定を行います。
下記3つの
React Native + Node.js+Expo+Xcode+Aodoroid Studio 環境構築
スマホ開発のはじめの一歩
環境構築について執筆しました。
よろしくお願いします。https://zenn.dev/nori1234/books/fb9bdb5315843d?fbclid=IwAR3Ni4VPMuUu-39FPwXIpYv9Kd_k-Xe7aU9jlWPzdv0Ceajcj9eifkxwKj0_aem_AaxBq3Urj_BEN0BmtT-OSsqJnOhA0XhaZWK1bbGijqA-eVZLaMrdJOSMz1EhZu20pJU
Node.jsでYouTubeにアップロード済みの動画のタイトルや概要を更新する – GPTに最初嘘つかれた
この辺りの記事の続きです。
https://qiita.com/n0bisuke/items/edce78c7eca9ecedea2b
https://qiita.com/n0bisuke/items/75062256622d83f49df4
## videos.updateでいけそう
https://developers.google.com/youtube/v3/docs/videos/update?hl=ja
こんな感じでいけそうでした。
“`js
const res = await youtube.videos.update({
part: ‘snippet’,
requestBody: {
id: videoId,
snippet: {
title: newTitle,
description: newDescription,
categoryId: 27 //カテゴリID
}
}
});
“`### 動いたコー
Qiita CLIを使う
https://qiita.com/Qiita/items/32c79014509987541130
Qiitaの記事をGitHubリポジトリで管理する方法があるということで、試してみました。
MacでQiita CLIをセットアップするまでの流れを書いておきます。
実行環境:MacBook Air M1, 2020# Node.jsのインストール
Qiita CLIを使うには、Node.js 18.0.0以上が必要ということで、Node.jsをインストールします。
Homebrewのインストール、nodebrewのインストール、Node.jsのインストールの順に行っていきます。Homebrewのサイトにアクセスし、インストールの下に記載されたコードをターミナルで実行します。
https://brew.sh/ja/
![スクリーンショット 2023-12-22 22.37.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3569835/0a6b8ac7-8633-8b5d-22d8-740
Node.jsでYouTubeのプレイリストから動画を削除する
動画自体の削除ではなく、再生リストから削除します。
ベースの記事はこちらです。
https://qiita.com/n0bisuke/items/75062256622d83f49df4
## 再生リストから動画削除コード
“`js
‘use strict’;const fs = require(‘fs’);
const {google} = require(‘googleapis’);const googleAuth = () => {
const CREDENTIALS_PATH = ‘client_secret.json’;
const TOKEN_PATH = ‘token.json’;
const credentials = JSON.parse(fs.readFileSync(CREDENTIALS_PATH, ‘utf8’));
const token = JSON.parse(fs.readFileSync(TOKEN_PATH, ‘utf8’));const {client_secret, client_
Node.jsでYouTube再生リストに含まれる動画リストを取得
こちらの記事の続きです。
https://qiita.com/n0bisuke/items/680ab634463eee2dbfd3
## OAuthクライアントとトークン情報を準備
– client_secret.json
– token.jsonの二つを準備しておきます。
## 再生リストから動画の検索
色々なAPIがあっていまいちわからなかったのですが、ChatGPTに聞いて出てきたサンプルが役立ちました。
playlistItemsのメソッドが該当する模様です。
> ![スクリーンショット 2023-12-22 17.02.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/6ade5d17-8706-dca5-1970-0af322dbe301.png “スクリーンショット 2023-12-22 17.02.33.png”)
ドキュメントを調べる -> サンプルではなく、ChatGPTに聞く -> ドキュメントを見るという流れ、効率的かも
https:/
Google APIのトークン取得で”このサイトにアクセスできませんlocalhostで接続が拒否されました。”
自分が管理しているYouTubeの再生リストを操作したいなと思ってAPI調べつつの詰まったところです。
何回かやってるけどいつも忘れている
## YouTube DATA APIのクイックスタート
こちらをやっていきます。
https://developers.google.com/youtube/v3/quickstart/nodejs?hl=ja
> ![スクリーンショット 2023-12-22 16.48.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/35387/6c28a8c9-6e65-45fc-c323-0ab99e613e3e.png “スクリーンショット 2023-12-22 16.48.57.png”)
### 準備など
– OAuthクライアントIDを作成して認証情報のJSONをDL
– `client_secret.json`
– サンプルコードを作成して実行### スコープ
サンプルコードでトークン作成するときにスコープの指定がありますが、何をしたい
GPTのストリーム機能を使いたい方へ(その1)
# Outline
– [前書き](#前書き)
– [本編](#本編)
– [まず動作イメージから](#まず動作イメージから)
– [先に結論を](#先に結論を)
– [ストリームって何が嬉しいの?](#ストリームって何が嬉しいの)# 前書き
本記事はOpenAIの各モデルで利用できるストリーミングを以下の構成で実現する方法について記載しています。
以下のようなニーズにお応えできると嬉しいです!– OpenAIのストリーム機能について
– ストリームによるメリットを知りたい
– Node.jsからじゃなく、Python([openai](https://pypi.org/project/openai/))からストリームを実現したい
– そもそもストリームって何?
– FetchとEventSourceの違いを知りたい# 本編
– **GPTのストリーム機能を使いたい方へ(その1)**
ストリーミングの動作イメージや、メリットについて解説していきます。(**いまココ!**)
– **GPTのストリーム機能を使いたい方へ(そ
BunでESM、CJS両対応のTypeScriptプロジェクトを公開する!
# Bunを使ってESMとCJS両対応(あとDenoも)のTypeScriptプロジェクトを公開する!
ESM、CJS、ブラウザ(Deno)のどこでも使えるライブラリを公開するためのテンプレートを作成しました!
思ったよりも苦戦したので、その記録兼解説として残して置きます。## 先に完成品の紹介
– [解説するテンプレートリポジトリ](https://github.com/totto2727-org/esm-package)
– 実際に公開したResult型ライブラリ(https://github.com/totto2727-org/result)
– こちらは別途紹介する記事を書く予定です## 背景
JavaScript(Node.js)には数多のパッケージが存在するため、自身でパッケージを作らなくても大抵はなんとかなります。しかし、中々理想と言えるものに巡り会えることはありません。あと一歩…!と感じることも多いでしょう。
大抵の場合はOSSで開発されているため、コントリビュートのチャンスとも捉えることが出来ますが、小規模だったり特定の機能のみであれば、自作し
FetchでPostするときの、headers部分を共用化する方法
指定を繰り返すことなく、共通のオプションを利用する方法として、カスタムのHTTPクライアントやユーティリティ関数を作成して再利用することができます。以下にその一例を示します。
“`typescript
// utils/httpClient.tsconst BASE_URL = ‘https://api.example.com’;
export const postRequest = async (endpoint: string, data: any) => {
const url = `${BASE_URL}/${endpoint}`;try {
const response = await fetch(url, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
// 他に必要なヘッダーがあればここで指定
},
body: JSON.stringify(data),
});i
初心者がnode.js expressでwebAPIを実装してみた。(簡易版)
## 前置
私はプログラミングを始めて半年の初心者である。名前はまだない
モバイルアプリの勉強をずっとしてきたが、ハッカソンでwebAPIを作ることに
なったので作ってみた。多分間違っている部分があると思う。※これは時間がない人向けに簡単にまとめたものです。
詳しく書いた物も随時投稿していきますので、お待ちください。## APIとは
そもそもAPIとはなんでしょうか?
API(Application Programming Interface)とは、プログラムの機能の一部を別のプログラム上で利用できるように共有する仕組み。簡単に言うとweb上で動かすプログラム関数みたいなことだと思う。#### webAPI
その中でもhttpやhttpsなどWeb技術を用いて実現されるAPIの一種。
今回はこれを実装していく。
イメージしにくいので画像を置いておく。画像のようにサーバーとwebブラウザで通信を行い、画面の切り替えをしたり、データを保存,呼び出しをしたりする。
![webAPI画像.jpg](https://qiita-image-store.s3.ap-northea
【Volta】node.jsバージョン管理ツールをVoltaに乗り換える【設定手順】
## はじめに
いままで`nodist`でnodejsのバージョン管理をしていましたが、どこか使いづらさを感じていました。
`nodist`の最終バージョンはここ2年間の更新がされておらず2019年です。
このまま使い続けるには一抹の不安があるので、この際、`Volta`に乗り換えるために手順をこちらにまとめておこうと思います。## Nodistのアンインストール
いままで使っていたNodistを削除します。意外としつこく残り続けるのでここでしっかり削除しましょう。
Nodist以外のツールを使用している方もここでしっかり削除します。### 1. コントロールパネルからアンインストール
コントロールパネルから`Nodist`を探しアンインストールします。
OSの再起動を求められた場合は再起動を行います。### 2. Nodistフォルダを削除
コントロールパネルから`Nodist`を削除してもNodistのインストール先のフォルダは残ってままになっています。
グローバルインストールしたものなどはここに残ったままなのでフォルダごと削除します。### 3. npm-cach
HuaweiのSiteKit APIでリバースジオコーディングして知り合いの病院の住所を覗いてみる
Huawei Bandを入手してみたので、HuaweiのAPIを試してみたく…… 調べていましたがHealth系のデータ以外にも色々ありそう、、だったのでSite Kitというものを使ってみました。
https://developer.huawei.com/consumer/en/doc/HMSCore-References/webapi-reverse-geo-0000001050161968
## 事前準備など
スクショがないですが、個人情報入れたりしながら申請して、翌日くらいに許可がおりました。
## 35.7642868,139.8043692
[ヘルスケアIoTLT](https://iotlt.connpass.com/event/300104/)の会場にもなる足立慶友整形外科のスポットをGoogleで調べると`35.7642868,139.8043692`という座標がでました。
> https://www.google.com/maps/place/%E8%B6%B3%E7%AB%8B%E6%85%B6%E5%8F%8B%E6%95%B4%E5%B
動画ストリーミングをnode.jsで読み込む方法
この記事は[ZOZO Advent Calendar 2023](https://qiita.com/advent-calendar/2023/zozo) #1 21日目の記事になります。
# TL;DR
HLSなどの動画ストリーミングをnode.jsで読み込むための方法です。# 結論
これだけです。“`typescript
import ffmpeg from ‘fluent-ffmpeg’
import fs from ‘fs’…
const url = ‘https://example.com/video.m3u8’
const stream = fs.createWriteStream(‘filename.mp4’)ffmpeg(url, { logger: console })
.addOutputOptions(
‘-movflags +frag_keyframe+separate_moof+omit_tfhd_offset+empty_moov’
)
.format(‘mp4’)
.on(‘error’, (error)