Node.js関連のことを調べてみた2023年04月07日

Node.js関連のことを調べてみた2023年04月07日

[メモ] docker-composeのnpmでpackage not foundが出るときの解決法

## エラーの内容
– dockerのコンテナ内部で、特定のパッケージについて、package not foundのエラーが発生する
– 内部を確認すると、node_modulesが見当たらない

## その他の状況
– Dockerfileにて、npm install は実行されている
– Dockerfileに、package.json は含まれている
– docker-composeにて、package.jsonのあるフォルダをマウントしている

## エラーの原因
– Dockerfileにて、インストールされたnode_modulesが、docker-composeのマウントによって上書きされていること

## 解決策
– 以下の記述を追加して、node_modulesのみマウントが行われないようにする
– 左を空白にすることで、マウントを行わないようにすることができる
“`
volumes:
– /app/node_modules
– ./app: /app
“`

元記事を表示

Node.jsでS3オブジェクトをまとめてZip圧縮してS3に保存する

## 要点
Node.js Streamを使うことで、メモリやストレージにデータを保持せず、高速かつ省メモリに実現できる。

## 実装
AWS Lambda (Runtime: Node.js 16.x) を想定した実装になっている。事前に [archiver](https://www.npmjs.com/package/archiver) をインストールしておくこと。
“` index.js
const archiver = require(‘archiver’);
const { PassThrough } = require(‘stream’);
const { S3 } = require(‘aws-sdk’);

const s3 = new S3();

const bucket = ‘bucket’;
const keys = [‘key1’, ‘key2’, ‘key3’];

exports.handler = async (event) => {

const archive = archiver(‘zip’);
const output = new

元記事を表示

Monaca + NCMB + ChatGPTでAIチャットアプリを作る(その2: OpenAI APIの実行)

NCMBでは公式SDKとしてSwift/Objective-C/Kotlin/Java/Unity/JavaScript SDKを用意しています。また、それ以外にもコミュニティSDKとして、非公式ながらFlutter/React Native/Google Apps Script/C#/Ruby/Python/PHPなど幅広い言語向けにSDKが開発されています。

今回は公式SDKの一つ、JavaScript SDKとFramework7を使ってChatGPTを用いたチャットアプリを作ってみます。[前回は画面の仕様とSDKの初期化について解説しました](https://qiita.com/goofmint/items/a7b223c6918c1098c5fd)ので、今回はスクリプトでの処理について解説します。

## コード

今回のコードは [NCMBMania/monaca-chatgpt](https://github.com/NCMBMania/monaca-chatgpt) にアップロードしてあります。実装時の参考にしてください。

## スクリプトについて

スクリプトとい

元記事を表示

TypeScript で ToDo アプリの土台を作る

## 概要

会社の業務で TypeScript を扱う機会が増えることが予想されるため、技術をキャッチアップする目的で ToDo アプリを作成する。今回はプロジェクトの作成と Next.js で ToDo アプリの土台を作成する。

## 目標

– Next.js でプロジェクトを作成
– ローカル環境で動かせるか確認
– 軽く変更点を加えて動作するか確認

## 動作環境

– Windows 11 Pro
– yarn 1.22.19
– node v18.13.0
– WSL 2使用

## 作業手順

### 1. プロジェクトの作成

ディレクトリは任意で決めてください。

“`terminal
~/practice $ mkdir 01_todo
~/practice $ cd 01_todo
“`

### 2. Next.js で ToDo アプリのプロジェクトを作成

今回は yarn でプロジェクトを作成する。

使用言語は技術キャッチアップのため、TypeScript を使用する。

“`terminal
~/practice/01_todo $ yar

元記事を表示

openai-nodeを利用してChatGPTのAPIを実行してみるまで

## この記事は何
[openai](https://github.com/openai/openai-node)のnpmライブラリを使って、新規のプロジェクトからChatGPTのAPIを叩けるようになるまでを記事にしました。
これから触ってみたい!と言った人などの参考になればと思います。

## 環境
– Node.js v18.15.0
– TypeScript v5.0.3
– pnpm v8.1.0
– パッケージマネージャはお好みで

## APIキーの作成
OpenAIのアカウントを作成して[APIキー作成のページ](https://platform.openai.com/account/api-keys)より、API Keyを作成します。

モーダルで1度しかキーは表示されないため、注意してください。

## プロジェクトを作成
`package.json`と`tsconfig.json`の作成、必要パッケージのインストールを行います。
パッケージは下記をインストールしています。

– `openai`: OpenAI公式で提供している、OpenAI APIの利用をサ

元記事を表示

nvmのインストール方法【Node Version Manager】

# nvmのインストール方法
1.Node Version Manager(nvm)をダウンロードする。
– https://github.com/coreybutler/nvm-windows/releases
![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/e54ff160-1148-0f33-84ce-3d91a937530b.png)
2.`nvm-setup.exe` を起動する。
![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/10333520-758f-f790-6640-787478746c65.png)
3.`I accept the agreement` を選択し、 `Next` を押下する。
![03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/449867/

元記事を表示

Node.jsの用語についてストックしていきたい

## 概要
職務上でNode.jsを使用する機会が増えてきたが、完全素人の何それ美味しいの状態なので、早い段階から整理していくことにする。
※学習記録用なので随時更新します

.
【参考資料】
・[Node.jsとはなにか?なぜみんな使っているのか?](https://qiita.com/non_cal/items/a8fee0b7ad96e67713eb)

### 1. モジュール
機能ごとに分割された小さなコードの単位で、JavaScriptファイルやファイルをまとめたフォルダを指す。

### 2. 内部モジュール
Node.jsをインストールした時に自動でついてくる標準的なモジュールのこと
(例:fs、http)

### 3. 外部モジュール
npmなどのパッケージ管理ツールを使ってインストールすることができるモジュールのこと(例:gulp)

### 4. パッケージ
外部モジュールのこと。JQueryやGSAPとかのライブラリと似たようなニュアンス

### 5. npm
パッケージ管理(インストールなど)を実施するツールのこと。
(MacにおけるHomebrewと

元記事を表示

Node.js: ChatGPT Speech to text の使い方

こちらと同じことを Node.js で行いました。
[Curl: ChatGPT Speech to text の使い方](https://qiita.com/ekzemplaro/items/df9953f484f329ca11de)
音源も同じです。

## プログラム

“`js:node_text.js
#! /usr/bin/node
// —————————————————————
// node_text.js
//
// Apr/05/2023
// —————————————————————
‘use strict’
const axios = require(‘axios’)
const FormData = require(‘form-data’)
const fs = require(‘fs’)
const dotenv = require(‘dotenv’)

dotenv.conf

元記事を表示

NodeJsで画像ファイルのダウンロードと保存(axios編)

# はじめに

前回の

https://qiita.com/SECUAL_masa/items/a90d44715cacbe7d472e

(↑)では、

> ※今時そんなコード???って驚かないで。色々理由があるのだ。

なこともあってrequestを利用した場合の話だった。
今回は axios を利用した際に同じ現象が発生したのでその対応方法をまとめる。

# 対応方法

前回の記事(request)ではoptionsに”encoding: null”を追加したが、今回は以下のように対応することで改善できた。

“`JavaScript:サンプルソース
var options = {
uri: “http://local_nginx_server_ip/globalipcam_resize_snap”,
responseType: “arraybuffer”
};
“`

# おわりに

この程度の内容だったら前回の記事のコメント辺りに書いたのでよかったのかもしれないが、記事にしたい理由がそこにはあるのだ。

元記事を表示

Firebase Admin SDKを使用してFirebase Authenticationの匿名ユーザーを一括削除する方法

# 概要
Firebase Authentication の匿名認証を使っていると際限なく匿名ユーザーが増えていってしまう。
匿名ユーザーの上限は1億個なので通常は放置しても問題無いと思われるが、もしもの時を考えて一括で削除する方法を調べてみた。

# 環境
* ローカル環境
* Windows 10
* Node.js (v18.14.2)

# 事前準備
[firebase]>[プロジェクトの設定]>[サービスアカウント]>[Firebase Admin SDK] から新しい秘密鍵を生成。
分かりやすい名前に変更して(今回は`keyFile.json`とする)`my-app`フォルダに置く。
以降の作業は`my-app`フォルダ内で行うこととする。

# 作業
## 必要なものをインストール
“`
npm install firebase-admin –save
“`
“`
npm install readline-sync
“`
readline-syncは省略可。
削除の最終確認をしたいので追加している。

## コードを書く
“`JavaScript:index.

元記事を表示

vscodeでcypressのintellisenseが見れない問題

# テスト環境
* node: 18.15.0
* yarn: 4.0.0-rc.42
* cypress: 12.9.0
* vscode: 1.77.0
* ubuntu: 20.04.6 LTS
* volta: 1.1.1

# 解決方法
* [IDE Integration (Cypress公式ドキュメント)](https://docs.cypress.io/guides/tooling/IDE-integration#Triple-slash-directives)
* この方法だとうまくいかなかったので、以下のようにする

* `/// `を一行目に入れる
* pathは適宜変更すること`node_modules/cypress/types/index.d.ts`があってればよい

# 原因
* `types=”Cypress”`は`nod

元記事を表示

nginxのCORS問題を解決する

localhostでの制作tipsは山ほど出てきたけど
探し方が良くないのかlocalhost-サーバ間の情報って全然見つからない。

## 構成

| key | value |
|—|—|
| 用途 | APIサーバ |
| インスタンス | AWS EC2 |
| SSL | LetsEncrypt (Certbot) |
| Webサーバ | nginx |
| App実行環境 | node.js |
| フレームワーク | express (3000番ポートで稼働) |
| DB | MongoDB |

## nginxのリバースプロキシ,CORS設定
localhost⇔サーバ
サーバ⇔サーバ
におけるnginxの設定は以下で動くのを確認。

“`nginx
map $http_origin $cors{
“^http://localhost(:\d+)?” $http_origin;
“^https://chirimen-jako.com” $http_origin;
}

server {

元記事を表示

Slackアプリへのメンションを契機にYes/Noボタンを返信して処理を分岐させる

## 概要
メンションを元に外部APIを叩き、取得した情報を元にDBを更新するSlackアプリを作成しました。
[![Image from Gyazo](https://i.gyazo.com/c91da3569bb0ddadd7c40f768c0e4eea.gif)](https://gyazo.com/c91da3569bb0ddadd7c40f768c0e4eea)

## Lambdaの準備
Node.jsでLambdaを作成しています。

“`javascript
const axios = require(‘axios’);

const SLACK_BOT_TOKEN = process.env.SLACK_BOT_TOKEN;

exports.handler = async (event) => {
console.log(`Event: ${JSON.stringify(event)}`);
let body = “”;
if (event.isBase64Encoded) {
// ボタンを押された時のblock_actionsペイロードはb

元記事を表示

Node.jsのバージョン切り替えに手こずった

普段案件でNode v10.12.0(古い上にLTSでもない)を使っているのですが、別件で最新版を使う必要がありv18.15.0にアップデート。

その結果、元のバージョンに戻せなくなり行き詰まったためその解決策を記録します。

結論から言うとなんてことのない、
**nodenvで管理していたことを忘れnodebrewで最新版をインストールしていたから**
でした。

## Nodeバージョン確認の流れ
まず現在のnodeバージョンとインストール済みのバージョンを確認
“`
現在
$ node -v
v18.15.0

インストール済み
$ nodebrew ls
v18.15.0
v16.20.0 (←いつインストールしたのかわからない)
“`

使いたいバージョンが出てこない…
仕方なくもう一度インストールを試みる。
“`
$ nodebrew install-binary v10.12.0

v10.12.0is not found
Can not fetch: https://nodejs.org/dist/v12.16.3/node-v12.16.

元記事を表示

gRPCをTypeScriptで使う

gRPCは様々な言語に公式に対応しているが、残念ながらTypeScriptには対応していない。
PureなJavaScriptはIDEの恩恵が十分に得られないなど不満があったため、TypeScriptでgRPCを扱う方法を調査しここにまとめる。

## 環境構築手順
#### 前提
Node.jsがインストールされていること

### 1. プロジェクト作成とパッケージインストール
以下のコマンドを実行し、プロジェクトの作成と必要なパッケージをインストールする。

“`bash
npm init -y
npm install @grpc/grpc-js google-protobuf @types/google-protobuf typescript ts-node
npm install –save-dev grpc-tools grpc_tools_node_protoc_ts
“`
#### それぞれのパッケージの概要

– @grpc/grpc-js
– gRPCのJavaScript用パッケージ。以前はgrpcというパッケージで提供されていたらしく、古いサイト

元記事を表示

Node.js + TypeScriptでexpressの入力支援、型推論を表示させるまで

## `typescript`、`express`をインストール

“` bash
npm init -y
npm install typescript
npx tsc –init
npm install express
“`

## `app.ts`を作成
“` js
touch app.ts
“`

## `app.ts`で`express`を`require`したところエラーが出た

“` js
const express = require(‘express’)
“`

![2023-04-02-05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184922/a55fe70d-dd22-f2e0-048d-93c97b57952c.png)

“`
TS2580: Cannot find name ‘require’. Do you need to install type definitions for node? Try `npm i –save-dev @types/n

元記事を表示

Apple silicon Macに移行したらdeasyncのnpm installでエラーになった話

# はじめに

Intel Macで開発していたWebアプリケーションの開発環境をApple silicon Macにも構築しようとしたところ、フロントエンドのコンテナ起動時に以下のようなエラーが表示されました。

“`shell:エラーログ(抜粋)
> deasync@0.1.24 install /app/node_modules/deasync
> node ./build.js

gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
“`

どうやら Python が見つからなかったようですが、フロントエンドは TypeScript で開発しており Python は使っていません。

* フロントエンドで使っていないはずの Python がなぜ必要なのか?
* Intel Mac での実行

元記事を表示

nodenv で Node.js のバージョンを切り替える

Node.js の version 切り替えをしたかったので [nodenv](https://github.com/nodenv/nodenv) を入れてみました。

## 準備

“`bash
$ brew install nodenv
“`

“`bash
$ vim ~/.zshrc

# vim に書き込む
export PATH=”/opt/homebrew/opt/nodenv/bin:$PATH”
eval “$(nodenv init -)”
“`

## コマンド一覧

“`bash
# インストール可能な Node.js のバージョン一覧
$ nodenv install -l

# install
$ nodenv install

# nodenvに認識させる
$ nodenv rehash

# install 済みの Node.js を確認
$ nodenv versions

# ローカルで利用する Node.js のバージョンを設定する
$ nodenv local

# グローバルで利用する Node

元記事を表示

Node.jsを基本からまとめてみた【Express入門】

## Node.jsとは?
Node.jsは、Googleが開発したV8 JavaScriptエンジンを使用し、サーバーサイドのJavaScriptアプリケーションを実行するためのランタイム環境のこと。わかりやすくすると、本来ブラウザ上でのみ動作するJavaScriptを、パソコン上で実行できる環境を作れるということ。
これにより、ブラウザ上では実現できなかったサーバーサイド(OS機能等)へのアクセスを実現し、自由にファイルの読み書きやネットワーク通信を実現できる。
また、Node.jsでは、高速でスケーラブルなネットワークアプリケーションを開発するための豊富なツールとライブラリが提供されているのも特徴の一つで、ウェブサーバーやAPIサーバー、ストリーミングサーバー、リアルタイム通信アプリケーションなど、さまざまな種類のアプリケーションの開発に利用できる。

## Expressとは?
Expressは、複雑なWebアプリを効率よく開発できるようにさまざまなモジュールが統合されたフレームワークで、特に、独自のサーバー開発やGET/POST通信などを簡単な記述で実現できるフットワークの軽

元記事を表示

Playwrightで楽天カードのCSVを自動で取得するクローラーを作った

## はじめに
クレジットカードの利用明細はPDFやCSVでダウンロードすることができますが、これらを手動で取得するのは手間がかかります。
うまく改造すればfreeeへの自動連携なども考えられます。
ビジネスカードのAPI非対応の履歴も取れますので、色々と利用できそうです。
そこで、Playwrightを使って自動化することで、手動での取得作業を自動化することができます。

以下は取得したcsvから月の支払金額をLine通知するサンプルです
https://github.com/natsumeaurlia/rakuten-csv

## 準備
適当な作業ディレクトリを作成。
必要なパッケージのインストール方法
以下のコマンドで、必要なパッケージをインストールします。

“`bash
npm init playwright@latest
npm install playwright dotenv
“`

### ドライバーのダウンロードと設定方法
Playwrightでは、実行するブラウザに応じたドライバーを必要とします。本クローラーでは、Chromiumを利用するため、以下のコマ

元記事を表示

OTHERカテゴリの最新記事