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

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

[TIPS]: Node.jsでglobパターンを、RegExpに変換するBetterな法方

[自分ブログより](https://blog.hedrall.work/posts/20221120-glob)

# 結論

以下のコードで`glob`の文字列を`RegExp`の文字列に変換することができました。

“`typescript
const minimatch = require(‘minimatch’).Minimatch;
const globToRegExp = glob => {
const regexp = new minimatch(glob).makeRe();
if (!regexp) throw new Error(`globに変換できません。glob: “${glob}”`);
return regexp.toString().slice(1, -1); // 前後に `/` がついてしまうので、sliceする
};
“`

# 解説

`glob`を`RegExp`に変換する際にちょうど良いライブラリを見つけるのに時間がかかったので、本記事を書きました。

まず `glob to regexp` などで検索すると [glob-to-

元記事を表示

npm run start実行した際、scriptsのprestartを先に実行させる

## 背景
ローカルで色々と遊びたい。
ただ、AWS上の本番環境への影響は避けたい。
また、コマンドの入力も極力減らしたい。
そういう時に使えるTIPS。

復習もかねて、アウトプットしてみる。

## 前提
* Node.js(v16.14.2)
* VSCode
* AWSアカウント

## 結論から先に

package.jsonのscriptsを以下のように設定し、
コマンドで`npm run start`を実行すると、
実は`start`が実行される前に、`prestart`が実行される。

“`package.json
“scripts”: {
“prestart”: “setx AWS_PROFILE kenny_test”,
“start”: “env-cmd -f .env npm run start-without-env”,
“start-without-env”: “nodemon ./index.js”,
}
“`
流れとしては、以下のようになる。

1.`npm run start`をコマンドで実行
2.scriptsの、`

元記事を表示

Azure WebAppsでPuppeteer動かしたかったけど上手くいかないメモ

Azure WebAppsでPuppeteerを動かしたかったけど動かないのでやったことメモしておきます。

## プランなど

– プラン: B1
– ロケーション: East Asia
– ランタイム: Node – 18-lts

## スタートスクリプト

> 続 puppeteer を Azure Web Apps で動かす試み
> https://uncaughtexception.hatenablog.com/entry/2020/01/05/171945

この辺りの記事を見て`/home/start.sh`を作成して

“`sh
#!/bin/sh

apt update \
&& apt install -y \
ca-certificates \
fonts-liberation \
gconf-service \
libappindicator1 \
libasound2 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libc6

元記事を表示

Socket.IOでコンソールベースのチャットを作成する

Socket.IOの勉強によく使われる簡単なチャットを作ってみました。
公式ドキュメントや各種記事には、ブラウザベースのチャットの例が多くありますが、今回はコンソールベースのチャットを作ってみました。
“`js:index.js
const io = require(‘socket.io’)();
io.listen(3000);

io.on(‘connection’, (socket) => {
console.log(`connected, id: ${socket.id}`);

socket.on(‘chat message’, (user, message) => {
data = `${message} from ${user}`;
console.log(data);
socket.broadcast.emit(‘chat message’, data);
});

socket.on(‘disconnect’, () => {
console.log(`disconnected, id: ${socket.id}`);

元記事を表示

Dockerを用いたnode.jsの実行環境構築

Dockerを用いてnode.jsの実行環境を構築しました.
nodejsのbase imageをpullせずに,ubuntuのbase imageにnode.jsをインストールする形で構成しました.

#フォルダの構成
“`text
├─Dockerfile
└─bash
└─nodesource_setup.bash
“`

# ファイルの内容
“`Dockerfile:Dockerfile
FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y –no-install-recommends \
apt-utils sudo git curl vim unzip openssh-client wget gnupg2 lsb-release software-properties-common \
build-essential cmake \
libopenblas-dev \
libglib2.0-0

元記事を表示

Nodenv経由でNodejs のバージョンを16をあげた際に「(mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e))」が出るときの対処法

– Nodenv経由でNodejsのバージョンを16系へあげた
– M1 macを使ってる

の場合に、「(mach-o file, but is an incompatible architecture (have (x86_64), need (arm64e))」のようなエラーが出ることがあります。
これはNodejs16系とそれ以外のバージョンでインストール時の挙動に差分があることが原因(となり得ることがあり)、以下のようなコマンドで指定した上で再インストールすると解消する可能性があります。

“`terminal
$ arch -x86_64 nodenv install 16.16.0
“`

元記事を表示

【Node.js】コールバック地獄の関数からPromiseを使って同期処理後に値を取得する

## はじめに
意外と検索してパパっと出てこないので記事化してみました。

Azure上のMySQLとの接続処理をコーディングしていたので、サンプルのコードはMySQLのusersテーブルからデータを取得する処理をイメージしています。

## 実現したいこと
async/awaitを使って非同期処理内で関数を同期実行して、返り値を同期的に取得したいケースがあるんじゃないかと思います。
“`sample.js
(async function() {
response = await requestApi();
console.log(response);
})();
“`

Promiseを返してくれる関数だったら楽でいいのですが、例えば下記のようにコールバックにコールバックを重ねている関数を全て同期処理させた後、値を取得するにはどうすればいいのでしょうか。

“`dbaccess.js
import * as mysql from ‘mysql’;
import * as fs from ‘fs’;
import * as dotenv from ‘do

元記事を表示

[nodejs + mysql] routesでapiを管理する

# 初めに
nodejs + mysql でベックエンドのコード書いているが、徐々にコートが長くなってカテゴリごとに分ける必要性を感じた。
ここで、routerという機能を使ってより管理しやすく環境を整えることを書いておく。

# 環境
window 10
mysql 8.0.31
ejs: 3.1.8
express: 4.18.2
## Dir
“`:dir
├─public
index.html
users.html
├─routes
users.js
└─views
server.js
“`
# Code
## routesで分ける前
“`javascript:server.js
const express = require(‘express’);
const mysql = require(‘mysql’);
const app = express();
app.set(‘view engine’, ‘ejs’)

const con = mysql.createConnection({
host: ‘localhost’,
user: ‘

元記事を表示

【Next.js】useEffectが2回実行されてしまう

## 環境
OS: MacOS Ventura 13.0.1
Node.js: v17.0.0
next: 13.0.3
react: 18.2.0

## 起きていた問題
nextの基礎学習をしていて、ステートの値をテーブルに出力したところ、同じデータが2回繰り返されていました。
(ソース割愛)

## 解決した方法
next.config.jsにこれを追加、変更する。

“`javascript
//next.config.js
const nextConfig = {
reactStrictMode: false,//これを追加
};
“`
開発環境でしか起きないようですが、気持ち悪いので変えときます。

## 参考にしたページ

https://b.0218.jp/202207202243.html

https://dagashi.pw/react18-useeffect-twice/

元記事を表示

node.jsでチャットしながら出来るブラックジャックを作りました

こんにちは
お久しぶりです。りちゃ丸です
10月までに完成させると言っていたチャットの出来るカードゲームなのですが
何とか完成しました
今回はブラックジャックになります
![ブラックジャック.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2879865/4386bafd-e340-b863-73f7-1fbe417fc27e.jpeg)
“`app.js
‘use strict’
const express = require(‘express’);
const socketIo = require(‘socket.io’);
const http = require(‘http’);
const fs = require(‘fs’);
const bodyParser = require(“body-parser”);
const ejs = require(‘ejs’);
var url =”./index.ejs”
const html =fs.readFileSync(url,’utf-8′,

元記事を表示

twitter stream apiで遊ぶ

# 概要
 twitter stream apiでワールドカップのtweetをpostgreに格納してみた。

# 準備
 nodeは必須。
npm i twitter-api-sdk
npm i pg
で、postgresqlは11だが、これは設定してあるのが前提
 table名はtweetで設定、id[serial],created_at[timestamp],author_id[varchar],text[varchar]
 ここまであれば、以下のファイルを次のコマンドで動かすだけ
 node pgst.js

# source
“`pgst.js
Tw = require(‘twitter-api-sdk’);
client = new Tw.Client(process.env.twitter_bearer_TOKEN);
const pg = require(‘pg’);
pgclient = new pg.Client({database: ‘yourdbname’});

async function main() {
await client.twe

元記事を表示

スマートウォッチをリマインダ代わりにバイブレーションさせる

題名みても、よくわからないような気がしますが、やりたいことは、普段つけているスマートウォッチ「Xiaomi Mi Band 3」に、自分で好きなメッセージを、自分の好きな時に通知して、スマートウォッチをバイブレーションさせます。
で、特にXiaomi Mi Band 3である必要はなく、一般的なスマートウォッチでよいです。
私は、LINEとXiaomi Mi Band 3を連携させているので、LINE通知が来ると、Xiaomi Mi Band 3がバイブレーションするようになっていますが、LINEとは関係なく、自分で好きなメッセージを、自分の好きな時にバイブレーションさせようというのが今回の趣旨です。
対象のスマホはAndroidです。

もろもろのソースコードは以下のGitHubに上げてあります。

poruruba/NotificationManager

https://github.com/poruruba/NotificationManager

# 対象のスマートウォッチ

適用可能なスマートウォッチは、アプリ連携できるアプリを選べるスマートウォッチです。
おそらく、たいて

元記事を表示

jit-grunt

# jit-grunt

まだgruntを使っていて、たくさんのloadNpmTasksを実行している環境もある模様。
そこでjit-gruntが有効であったことを残しておきたい。

“`bash
module.exports = function(grunt) {

grunt.initConfig({
// config類
});

grunt.loadNpmTasks(‘grunt-contrib-concat’);
grunt.loadNpmTasks(‘grunt-contrib-clean’);
grunt.loadNpmTasks(‘grunt-contrib-uglify’);
grunt.loadNpmTasks(‘grunt-contrib-watch’);
grunt.loadNpmTasks(‘grunt-contrib-imagemin’);
grunt.loadNpmTasks(‘grunt-contrib-compress’);
grunt.loadNpmTasks(‘grunt-contrib-html

元記事を表示

Discord.jsで短縮URLを作りたい

# Discord.jsで短縮URLを作りたい
突然ですがDiscordでURLを短縮したい!って思ったことはありませんか?
っていうことで今回はDiscord.jsを使ったURL短縮プログラムを紹介します
***
## 必要なもの
* Node.js 16.x 
* discord.js ^13.12.0 
* My bot (持ってなきゃ作れない)

## 作り方

ではまずnpmを入れていきます
isgdをいれます
“`json:package.json
{

“engines”: {
“node”: “16.x”
},
“dependencies”: {
“discord.js”: “^13.12.0”,
“isgd”: “^1.1.3”,
}
}
“`

そしてこのようなやつを書きます

“`java:index.js
const { … } = require(“discord.js”);
const client = new Client({
intents: […],
});

var isgd = r

元記事を表示

【1分】レンタルサーバーにNode.js, Expressを導入してAPIサーバーを構築する。(CoreServerへ、node環境を構築。)

Coreserver V2 に、Node.js (express) を導入しよう。

そう思ったものの、レンタルサーバーにExpress サーバーを立てることは容易ではなく、一日詰まってしまいました。

ですが、以下の方法により瞬殺でExpress環境を整えることができたので共有します。

https://kaedeee.com/coreserver-node-express-cgi/

# 詰まっていた理由
* VPSでないレンタルサーバーの場合、CGI スクリプトから各言語を動かすことになるが、js は対応していないっぽかった。
* 調べても、Flask サーバーを立てるHow to しか載っていない。

# これだけ!解決法
npm にて、cgi-express をインストールすることで、解決

https://www.npmjs.com/package/cgi-express?activeTab=versions
“`
npm i cgi-express
“`

# もっと!解決法
以下、詳しく説明します。

## nvm 経由で安定版 node をインストール
以下のペ

元記事を表示

【@shopify/shopify-api】Received Invalid shop argumentの対処法

## はじめに

Shopifyの公式ライブラリを使って、認証認可を行うときにエラーがでたので今回はエラーとその対処法について書いていこうと思います。

ちなみにShopifyの公式ライブラリの他のエラーについても記事にしているのでよろしければご覧ください。

[**@shopify/shopify-api**: Shopify.Context.initialize()がundefinedになる](https://qiita.com/manasan-iTL/items/0201583ec9bd1b6e4bf9)

### この記事の対象者

– Shopifyの公式ライブラリ「**@shopify/shopify-api**」を使っている人
– Shopifyの認証認可で躓いている人

### 解決法だけ知りたい人へ

beginAuth()に渡すshopの引数をURLではなく、**ドメイン名**にする。

“`jsx
// 以下は動かない
// const shop = “[https://test-theme-jp.myshopify.com/](https://develop

元記事を表示

2022年11月版:爆速でTwitter APIを利用してつぶやき投稿したい人の為の流れまとめ

## 経緯
現在開発中の個人アプリでTwitter APIを利用しようしたらネットに転がっている情報がやたら古かったり、錯綜気味(個人的解釈です)でTweet投稿までに若干手こずったので備忘録的に放流しておきます。

## どのように
– サクッとNodeで
– ライブラリは[twitter-api-v2](https://github.com/PLhery/node-twitter-api-v2)を使って

## 前提
– [Twitterデベロッパーポータル](https://developer.twitter.com/en)の登録、開発者申請が既に終わっている前提
– 必要なJSライブラリは(twitter-api-v2)はインストール済み

## 目標
Hello Worldをツイートする

## 実装

### 1. 認証情報の準備

現在TwitterからAPIを利用する為に、3種類の認証情報が提供されている。今回の目標であるツイートを投稿までに利用するのは以下の情報の4つ。

– Consumer Keys
– API KEY
– API KEY SECRET

元記事を表示

electronでQRコードリーダーを作った

# 概要
PC上でQRコードをスクショして読み取るアプリがなかったのでelectronで作った。

QRをsnipping toolなどでキャプチャ(コピーだけでいい)→アプリ起動→クリップボードを参照→QRの内容を表示
といった流れ

QRの読み取りはjsqrというライブラリを使う。
electronのチュートリアルはググればわんさか出てくるので割愛する。
# 動作
![usage.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2986051/231cd102-dd05-0963-c927-e5713f56ea14.gif)
# 環境
node v16.13.1
electron 21.3.1
jsqr 1.4.0
# ipc通信とpreloader
本記事では、ipc通信とpreload.jsによるAPIアクセスを利用しているので、この概念を理解した上で読んでください。
[Electron ipc (プロセス間通信) ipcMain, ipcRenderer 使い方](https://ichiri.

元記事を表示

nodeJS でURLからパラメータを渡す方法

# 環境
“`json
{
“dependencies”: {
“ejs”: “^3.1.8”,
“express”: “^4.18.2”,
},
}

“`

# Code

“`javascript:server.js
const express = require(‘express’);
const app = express();

app.get(‘/qiita’, (req, res) => {
res.send(‘Hola!’)
})

// ここにパラメータを受けるコード

app.listen(8080, function () {
console.log(‘listening on 8080’)
});

“`

## Path Variable(経路変数)
“`javascript:server.js
app.get(‘/qiita/:name’, (req, res) => {
console.log(req.params.name)
// Ari

res.send(`Hello!

元記事を表示

nodenvというnode.jsバージョン管理

こういうものがあるんだね〜

元記事を表示

OTHERカテゴリの最新記事