Node.js関連のことを調べてみた2022年03月01日

Node.js関連のことを調べてみた2022年03月01日

GitHub Actionsを使ったGitHub PackagesでのNode.jsのDockerイメージの管理

オープンソースの開発者に関わらず、githubを利用して開発をされているかたは多いと思います。

Repositoryという言葉は長いので、英語でもよく repoと書いたり、会話でも repoと言ったりします。

今回は、こちらからの翻訳です。

https://snyk.io/blog/managing-node-js-docker-images-in-github-packages-using-github-actions/

githubでの安全なNode.jsのDockerイメージの管理についてステップバイステップの説明となっています。

# GitHub Actionsを使用して、GitHub Packagesで Node.jsのDockerイメージの管理する

Liran Tal
July 13, 2021
現在、あなたがオープンソース開発をしているなら、GitHubコミュニティ内でアクティブに活動し、オープンソースプロジェクトやそのリポジトリに参加されていると思います。最近GitHubのエコシステムに加わったのが[GitHub Packages](https://

元記事を表示

Electron 18 を使って200行以内でファイルの入出力ができるようなテキストエディタを作ってみる。

## 初めに

実用を目的とはしていません。`Electron`の構造を理解するために、どれだけ骨格を抜き出せるかを目的にしています。

というわけでスクラッチから書いてみます。

`html`中に`style`と`javascript`を直書きしているので、以下のワーニングが出ます。
`Electron Security Warning (Insecure Content-Security-Policy)`

以下のレポジトリにワーニングの出ない、他の機能も入ったバージョンを置いておきます。
ワーニングの消し方や結果だけを知りたい方はこちらで!
https://github.com/Satachito/electron-quick-start-MOD

`npm`,`npx`は入っている前提です。(`node`が入っていれば通常入っています)

## 準備

フォルダを作ってその中に`package.json`を作って`npm`で`Electron`をインストールします。

“`
$ mkdir TE
$ cd TE
“`
“`package.json
{ “main”:

元記事を表示

Node.jsのバージョン管理 n でバージョンが切り替わらない

# 事象
Node.jsのローカル環境でのバージョン管理にはnというバージョン管理ツールがオススメという記事が多数あったので、インストールした。その際に、n でインストールしたNodeバージョンに切り替わらなかった時の対応方法まとめ。 ※ nのインストール方法は省略。

生じた現状は以下。

“`
usr@usrMacBook-Pro ~ % n stable
installed : v16.14.0 to /Users/ogasawarasatoru/.n/bin/node
active : v17.0.1 at /usr/local/opt/nvm/versions/node/v17.0.1/bin/node
usr@usrMacBook-Pro ~ % node -v
v17.0.1
“`
`n stable`でNodeのLTSをインストール後、`node -v`で確認すると、activeのバージョンが違う。

# 原因
どうやら、最初から入っていたnvmのNodeがactiveとして設定されていたようで、n でインストールしたnodeが適用されなかった。(

元記事を表示

シークライズ

「Sequelize」の読み方を、私は「シークライズ」と表記、記述、呼称しています。
Sequelizeとは、データベースへ簡単にアクセスするためのNode.jsのライブラリです。
TypeScriptやJavaScriptで使用しています。

元記事を表示

VRChatがOSCに対応したので、まずはNode.jsでアバターをジャンプさせてみた

[![Image from Gyazo](https://i.gyazo.com/63ea9219eb659bd581bac3b5c2920d03.gif)](https://gyazo.com/63ea9219eb659bd581bac3b5c2920d03)

## 参考記事

– VRChat [https://hello.vrchat.com/](https://hello.vrchat.com/)
– 【VRChat】オープンベータ版で「OSC」に対応 オーディオ機器でアバターの一部操作が可能に | Mogura VR [https://www.moguravr.com/vrchat-29/](https://www.moguravr.com/vrchat-29/)
– VRChat OSC for Avatars — VRChat [https://hello.vrchat.com/blog/vrchat-osc-for-avatars](https://hello.vrchat.com/blog/vrchat-osc-for-avatars)
– VRChat OSCを使

元記事を表示

【サーバサイド編】GraphQLを使うぞ

こんにちは!今回は自身の備忘録としてGrapuQLについてまとめたいと思います。
# 目次
[1.今回作るもの](#1-今回作るもの)
[2.使用技術](#2-使用技術)
[3.必要なインストール](#3-必要なインストール)
[4.今回登場する主なファイル](#4-今回登場する主なファイル)
[5.早速書いていこう](#5-早速書いていこう)
・app.jsを書く
・schema.jsを書く
・MongoDBと接続する
・modelsフォルダ内のファイルを書く
[6.メソッドの書き方](#6-メソッドの書き方)
[7.データの取得](#7-データの取得)
[8.データの追加、編集、削除](#8-データの追加編集削除)
・データの追加
・データの編集
・データの削除
[9.上手くいっているかテストしてみる](#9-上手くいっているかテストしてみる)
[10.まとめ](#10-まとめ)

:::note info
超ざっくりGraphQLとは:
・DBから情報を取得するのに使えるやつ。
・APIのURL(エンドポイント)が1つで済む!
・クライアントサイドでDBから自分で持ってきたいデー

元記事を表示

node.js の require と import

node.js の require(CommonJS) と import(ESModule) について、理解が曖昧だったため、調べ直してみました。

※2022年2月の 最新バージョン [v17.6.0](https://nodejs.org/dist/latest-v17.x/docs/api/) のドキュメントをもとに記述しています。あらかじめご了承ください。

## require と import の違い

簡単にいうと、nodeモジュールの読み込み形式の違い。

require は [「CommonJS」](https://nodejs.org/api/modules.html) 形式によるモジュールの読み込み方法。
import は [「ECMAScript」](https://nodejs.org/api/esm.html) 形式によるモジュールの読み込み方法。

requireを定めたCommonJSは [2009年に始まったプロジェクト](https://ja.wikipedia.org/wiki/CommonJS) で、歴史が長い。nodeの公式ドキュメントを見ると

元記事を表示

Vite + Vanilla な JavaScript を軽く試してみる(npm を利用)

この記事では、よく名前を見かけるようになったと思われる「[Vite](https://github.com/vitejs/vite)」を、Vanilla JS と組み合わせて試してみる、というものです。
自分が最初に名前を見かけたのは、以下の記事だったように思います(もしくは、Twitter のツイートで見かけていた、とかかも)。

●Viteで爆速なフロントエンド開発環境を作る
 https://zenn.dev/sykmhmh/articles/ff09bea2cf7026

この後は、以下に記載されているセットアップから、いくつか設定を追加してみる、といったあたりをやっていきます。

●はじめに | Vite
 https://ja.vitejs.dev/guide/#%E6%9C%80%E5%88%9D%E3%81%AE-vite-%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B
![テンプレートについて](https://qii

元記事を表示

dockerで構築したローカルサーバーをスマホなど外部機器でアクセスする方法

# 概要
dockerでローカルサーバーを立ち上げたときに、スマートフォンでの検証をする場合などがある。その際に、スマートフォンに対して`http://localhost:8000`などとアクセスしてもつながらないことがあった。ファイアウォールの設定が関係しており、外部機器でのつなぎ方の設定を記載する。

# 使用端末
– win10

# 方法
* 設定
1. 「セキュリティが強化されたWindows Defender ファイアフォール」を開く。
1. 左の項目から「受信の規則」を選択
1. Docker Desktop Backend(プロファイル パブリック)を探す
1. 許可されていないとなっている場合があるため、右クリックでプロパティを開き、許可するを選択して、適用
1. また, パブリック以外になっていたら、パブリックにする
1. 2つあると思うので二つとも許可とパプリックに設定する(UDP, TCP)
1. 再起動(念のため)

* 実際に接続してみる
1. 外部機器(スマホなど)とパソコンを同じWi-Fiにつなぐ。
1. dockerにてローカルサーバーを立ち上げる。

元記事を表示

nodenv で指定したバージョンのnodeがインストールできない

# 現象
nodenvを使用してnodeのバージョン管理をしている環境で、`nodenv install xx.x.x` コマンドで、指定したバージョンをインストールしようとすると、下記のエラーが出る。

“`
node-build: definition not found: xx.x.x
“`

`nodenv install –list` でインストールできるバージョンの一覧を表示させても、欲しいバージョンが表示されない。

# 対処法

下記コマンドを実行し、`node-build` を最新化する。

“`
git -C ~/.anyenv/envs/nodenv/plugins/node-build pull
“`

再度、`nodenv install –list`を実行して、バージョンの一覧が最新化されているのを確認し、`nodenv install xx.x.x` を実行する。

元記事を表示

Node.jsのMySQLモジュールを使った値のエスケープでハマった話

## はじめに
こんにちは。ブログとQiitaの使い分けがいまいちできない鮎月(あゆつき)です。
Qiitaの投稿は2つ目になりますが、タイトル通りの話です。

一応確認ですが、このモジュールについてのお話です:

https://www.npmjs.com/package/mysql

https://github.com/mysqljs/mysql

## 2つのエスケープ方法
Node.jsのMySQLモジュールには、2つのエスケープ処理の方法があります。

### connection.escape()
例としてこんな感じになります (公式Docより)
“`js
var userId = ‘some user provided value’;
var sql = ‘SELECT * FROM users WHERE id = ‘ + connection.escape(userId);
connection.query(sql, function (error, results, fields) {
if (error) throw error;
// …

元記事を表示

yarn start できなくなった

# yarn start できない
command failed with exit code 127.
が表示されている
## 試したこと
### yarn install
何も変わらず
### rm -rf node_modules 後に npm install
何も変わらず
### yarn add yarn
できた!

# まとめ
結局何が原因なのかは分かりませんでしたが、なんとかなったので、よしとします。
また、このあたりはきっちり学習しないと困る気がするので頑張ります。

元記事を表示

フロントエンドエンジニアの Node / Express 入門 ~ CRUDなAPIを作る ~

# 初めに

フロントエンドエンジニアになって7ヶ月が経ちました。最近サーバーにも興味が出てきたのでフロントと相性の良さそうな Node.js と、そのフレームワークの Express を使ってAPIを作ってみます。あと MongoDBとかいう子が Node/Express のプロジェクトでよく使われるっぽいので一緒に入門してみます。
サーバー初心者なのでその辺はあしからず、、

## 本記事で取り扱うこと

* Node.js / Express を用いたAPI作成しPostmanで動作確認をする
* MVCモデルっぽく作ってみる
* MongoDBとの接続

## 扱わないこと

* DB設計とかの踏み込んだ部分
* Typescript との連携
* Vue / React などのフレームワークとの繋ぎ込み
* EJSなどのテンプレートエンジン

## バージョン

Node
Express
Mongoose

## ディレクトリ構成

“`
node-project
├── controllers
│ └── api.js
├── models

元記事を表示

HomebrewでnpmのCLIツールを管理する brew-npm のご紹介

HomebrewでnpmのCLIツールを管理する [brew-npm](https://github.com/shuuuuun/brew-npm) をご紹介します。

## brew-gem が便利

brew-npm の紹介に入る前に、 [brew-gem](https://github.com/sportngin/brew-gem) というツールはご存知でしょうか。

macで複数プロジェクトのRubyの開発をしていると、 [rbenv](https://github.com/rbenv/rbenv) や [rvm](https://rvm.io/) などを使って、プロジェクトごとにRubyのバージョンを切り替えて作業をしている方が多いと思います。

そんな環境で、グローバルにいろいろなディレクトリで使いたいCLIツールなどを、普通にgemでインストールすると、Rubyのバージョンが切り替わったときに使えなくなってしまいます。

“`sh
# こういうのよくありますよね
$ foreman -v
rbenv: foreman: command not found

The `fo

元記事を表示

Twilioで匿名のLINE通話みたいな機能を実装してみた

# はじめに
アプリ内で匿名通話を行うような機能を実装したので、導入手順(主にバックエンド)をまとめました。

# 背景
お互いの電話番号を知らせずに通話する(匿名通話)という要件があったので、Twilioで050番号を購入して自動転送させるという仕組みをつくりました。

Twilioを使うと、匿名通話のようなプライバシーを守るための機能だけではなく、自動応答(音声)などの仕組みも簡単に導入することができます。
例えば、食べログの電話予約で050番号にかけると、店舗側で受話器をとったときに「食べログからの電話です」という音声が流れるようなのですが、このような機能もTwilioで実装することができます。

また、ユーザAの端末からTwilioの050番号にそのまま架電することもできる(回線交換方式)のですが、以下の問題があったので、パケット交換方式(VoIP)による通話機能を実装することにしました。

– ユーザAに発信料、Twilioアカウントに着信料が発生する
– 0120番号に切り替えても、Twilioアカウントへの着信料が発生する
– ユーザAの発信は通話アプリから行うため(作成

元記事を表示

CPUをOpen Hardware MonitorとNodeJSで監視してSlackで通知する

# 何がしたいか
重いシミュレーションを長い時間かけてリモートPCで回し続けるのはやっぱり不安な点があり,特に知らん間に冷却装置が不調を来したらどうしようという不安に苛まれる,まして多少はCPUをチューニングしているような状態だとそれは尚更になる
ということでスクリプトでCPU監視し続けて,温度が一定値を超えたらSlackに通知を投げ,Remote Desktopで非常措置を迅速に行えるようにした(ソフトの関係上でWindows限定だけど)~~(ネットワークが切れた場合のことは知らんものとする)~~

## 大まかな筋書き

+ サーバーモードのOpen Hardware MonitorでPCを監視
+ NodeJSでそのAPIを叩いてJSONを取得・加工
+ CPUの状態を評価して必要な場合はWebhookのAPIを叩く
+ Slackで確認して対応する

# 内容

## Open Hardware Monitorの設定

### インストール

https://openhardwaremonitor.org/

### サーバーモードで起動
管理者権限で

元記事を表示

test

## タイトル
ssa
ssa
ssa
ssa
ssa
ssa

### タイトル
ssa
ssa
ssa
ssa
ssa
ssa

#### タイトル
ssa
ssa
ssa
ssa
ssa
ssa

#### タイトル
ssa
ssa
ssa
ssa
ssa
ssa

元記事を表示

sqlite3でキーの配列に対応するレコードを取得する方法の実行時間比較

# 前提
Node.js で sqlite3 モジュールを使用して試していきます
色々見当違いなことをしているかもしれないので見つけた方はコメントで指摘していただけると嬉しいです

# やりたいこと

下記のようなテーブルが存在するとします
|id (PK)|hash (UNIQUE)|
|:-:|:-:|
|1|abc|
|2|def|
|3|ghi|

この時、`[‘def’, ‘def’, ‘ghi’, ‘abc’]` という配列から `[2, 2, 3, 1]` という配列を得る良い方法を調べたのですが
うまく見つけられませんでした
そのため取得する方法を 4 種類考えて実際の実行時間を計測してみました

ベスト (ベター) プラクティスをお持ちの方はコメントで教えてください (切実)

# 手順
## レコード作成
### ハッシュ値作成
とりあえず 1-100 の整数値の md5 ハッシュ値を作成します
“`javascript
const length = 100
const crypto = require(‘crypto’)
const hashes = Array

元記事を表示

Nightwatch で E2E テストを行う時に webpack-dev-server を自動で起動・停止させる

# 環境

* Node.js@v15.3.0
* Nightwatch@v2.0.6
* webpack@v4.46.0

# やりたいこと

* 実際の e2e テストを行う前に、ローカル環境で e2e テストスクリプトが正しく動作するか、確認したい。
* ターミナルから webpack-dev-server を起動 → Nightwatch起動でもいいが、そうじゃない。
* コマンド1つで webpack-dev-server起動 → Nightwatchによるe2eテスト実行 → webpack-dev-server停止までを自動化したい。

# 結論
以下の様にする

## 前提
* webpack-dev-server 単体で、正しく動作する事
* Nightwatch 単体で、正しく動作する事
* ターゲットブラウザはChromeのみ

## ディレクトリ構成
/build
 webpack.conf.json
/test
 /e2e
  /specs
   test.js
  nightwatch.conf.js
  nightwatch.js
  runner.js

元記事を表示

Node.jsの通常関数のthisに関して

## 初めに
普段Node.jsを使用しており、通常関数のthisの基本的な仕様を勉強したためアウトプットのために記事を投稿する。

## 開発環境
■ Node.jsのバージョン
v11.1.0
■ 使用OS
Amazon Lunux 2

## ① 基本的な例

“`js
const o = {
name: ‘taro’,
introduce() { return `My name is ${this.name}`; }
}

console.log(o);
console.log(o.introduce());
“`

上記コードでは、oという定数にオブジェクトが格納されている。
以下は参考文献[1]より抽出したもの。

> メソッドが呼び出されるときthisは、そのメソッドがプロパティとなっているオブジェクトを指しています。

こちらを拝借すると、ここで指しているメソッドとは以下にあたる。
“`js
introduce()
“`

そして、メソッドがプロパティとなっているオブジェクトとは定数oである。
そのため、thisはoをバインドするため以下に置き換え

元記事を表示

OTHERカテゴリの最新記事