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

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

Express.js ファイルアップロード (express-form-data 編)

#はじめに
Express.js でファイルアップロードする場合、multer と呼ばれるミドルウェアがしばしば使用されます。
しかし、ファイルアップロードに対応するミドルウェアは他にもいろいろあって [express-form-data](https://www.npmjs.com/package/express-form-data) もその1つです。
express-form-data は単なるファイルアップロードのためのミドルウェアではなく、JavaScript の FormData オブジェクトを Express.js で扱うためのミドルウェアです。

Express.js では POST データはフォームから submit されたデータと JSON にのみ標準で対応しています。このため、Fetch API で FormData を POST してもリクエストボディが undefined になってしまい処理が続行できません。

そこで、[express-form-data](https://www.npmjs.com/package/express-form-data) をミド

元記事を表示

Express.js ファイルアップロード (multer 編)

#はじめに
[multer](https://www.npmjs.com/package/multer) はファイルアップロードでよく使われる Express.js ミドルウェアです。サンプルや関連記事も多くて安定した人気です。

multer ではファイルアップロードに関して次のことが可能です。

* 単一ファイルのアップロード
* 単一エレメントからの複数ファイルのアップロード
* 複数エレメントからの複数ファイルのアップロード

[npmjs.com](https://www.npmjs.com/package/multer) のサンプルや説明は簡単な物しかなかったので、上の3つのケースについて簡単に試してみました。

その前に multer の基本ですが次のようにします。

– multer モジュールをロードする。

const multer = require(‘multer’);
– multer オブジェクトを初期化する。

const upload = multer({dest:updir}); // updir はアップロード先のフォルダ(フルパス

元記事を表示

Node.js で Excel ファイルをパースしてデータ抽出するときの備忘録

覚えておきたいことだけ書く。

# リファレンス
https://www.npmjs.com/package/xlsx

# セルの指定方法

‘A1’, ‘A2’ と指定するのが基本。
隣のセルとかを指定するには、セルをエンコードして操作する。

> Cell and cell address manipulation:

> – format_cell generates the text value for a cell (using number formats).
> – encode_row / decode_row converts between 0-indexed rows and 1-indexed rows.
> – encode_col / decode_col converts between 0-indexed columns and column names.
> – encode_cell / decode_cell converts cell addresses.
> – encode_range / decode_range converts cel

元記事を表示

VSCodeの拡張機能を作ってみる その1 導入編

# VSCodeの拡張機能を作ってみよう
## モチベーション
仕事をする上で欠かせないものとなりつつあるVSCode。
自分なりにカスタマイズして使ったりもしているけれども。
拡張機能を利用すればどんなことまで出来るのかという事を知っておくと、
より使いこなす事が出来るかなと思いチュートリアルを試してみる事に。
### 参考
https://code.visualstudio.com/api
# 前準備
## Node.jsのインストール
チュートリアルに入る前にnpmを叩けないといけないので、Node.jsをインストール

1. Node.js公式からLTS版をダウンロード
https://nodejs.org/ja/
1. msi を実行してインストール
1. コマンドの実行確認

“`
>node -v
v14.17.5

>npm -v
6.14.14
“`

## 作業フォルダの作成
今回はWindows環境で作業するので、以下のフォルダを作業フォルダとして準備

“`
C:\code_extention
“`

# Your First Extensio

元記事を表示

あなたの夏のgit commit、見てみませんか?

楽しい時は短いもので、なんともう夏も終わってしまいます。
そこで私は思いました、**「私はこの夏、何をしたのだろう?」**と・・・
ということで、コミットを一覧にするマクロを作ってみました!

##デモ画像
![qiita 使用画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/612249/5f55b95d-866e-4dfd-2598-ad85c4cc99b8.png)

##使い方
以下のコマンドを、調べたいリポジトリの親ディレクトリ(workspaceなど)で実行してください[^1]

“`bash:terminal
git clone https://github.com/WTomoharu/git-commit-viewer.git
cd git-commit-viewer
node index.js
“`

そして、`localhost:3000`にアクセスすれば、
あなたのコミット履歴を見ることができます!

##詳細
リポジトリは[https://github.com/WTomoh

元記事を表示

Javascriptにおける ”this” とは?

# はじめに
Reactやコンポーネント思考を利用するには必須といっていいほどの__”this”__について何となくでいつも使ってましたが、今回しらべるふと意味を調べられずにはいられなくなったので備忘録として残したいと思います。
*内容に不備や言葉足らずなところがあるかと思いますがご了承ください。

## thisとは?
__”this”__ってなんだ?
みんな大好きWeblio辞書で調べてみました。
> 主な意味:
>この、ここの、こちらの、こういう、(たった)今の、現在の、今…、当…、ある(一人の)
>__(空間的,時間的,心理的に話し手の近くにある対象を指す)__
>引用 : https://ejje.weblio.jp/content/this

ほぉ~・・・だよね。って思いましたがカッコ内にある内容がJavascriptととしての”this”の意味合いと
マッチしており(注:個人的主観)おおおおおおっ!となりました!!

### Javascriptとしての”this”
では早速本編に入っていきます。

下のコードを見てください。
特に何の変哲もない一般的なオブジェクト宣言と

元記事を表示

Node.jsでApatchTikaを使用して文字抽出を行う

# はじめに
様々な文書の文字抽出を行うことができる**[Apache Tika](https://tika.apache.org/)**(以降Tika)
ソースはJavaで書かれており、jarファイルから使用することができる。
今私の中でNode+TypeScriptが熱く、
Node.jsからこのTikaが使用できればいいなと思い、試行錯誤して何とか使用できるようになりました。
それまでの経緯を残したいと思います。

# 環境
– Node v14.17.0
– Typescript 4.3.2
– java 1.8.0_131 (jdk)
– npm 6.14.9
– Windows 10 Pro
– Python 2.7.12
– Visual Studio 2017

# Apatch Tikaのダウンロード
[ダウンロードサイト](https://tika.apache.org/download.html)から`Mirrors for tika-app-2.1.0.jar`をクリックしダウンロード

# npmを使用してモジュールをインストール
NodeプログラムからJa

元記事を表示

Integrate AEM and IDS via Node.js

![Slide1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486518/abefe7a1-a8d4-cf4a-7e81-87451e3db35c.jpeg)

[前回 Dynamic Deck を試用](https://qiita.com/o2346/items/4fbb20eac80c22623c66) しましたが、これだけでは不足に感じるようになってきました。単純に画像を抽出してはめ込んでいくだけならいいのですが、より複雑な要件に対応する POC を開発する必要が出てきた次第です。具体的にやりたいのは:

* Content Fragment(以下CF) 単位でアイテムを取得・配置していきたい
* CF に関連付けられた JCR 上の関連画像を、それぞれの CF の文脈内に配置したい
* 画像のパスは CF がプ

元記事を表示

Guildシステムの設計

#初めに
 この記事は何かプログラミングについて有用なことを書いてありません。というか誰かにとって有用なものではなくて、僕がGuildについて思考を、もしくは設計をまとめたいから書くだけのものです。
 お気をつけくださいな。

 今回紹介するwebサイトはまだまだ開発段階なので、時々アクセス出来ないでしょうし、エラーコードがまんま出てくることもあると思います。

https://guild.click/message
#概要
 Guildシステムは僕が暇つぶし感覚で開発しているwebサイトです。言語はnode.js、使用しているデータベースはMongoDB。
 それぞれのバージョン(現在2021/8/28)
・node.js  v15.11.0
・mongodb 4.4.6

 初めは依頼掲示板と銘打ってシステムを組もうと思っていたところ、しかしオンラインでの取引は何が不安かと考えると、相手の信用度と理解度が不安なんだと考えて、そこを補完したシステムを考えました。
 それがGuildシステムです。

 Guildシステムの根幹を成す機能は以下の通り。
・Level機能
・Stamina

元記事を表示

GrayBot-Voiceの環境を構築する方法

#はじめに

こんにちは。WhitePaper所属デベロッパのたぽと申します。
WhitePaperより先日発表された、GrayBot Projectのひとつ、Discord通話読み上げサービスの環境構築方法を詳しく解説します。
読み上げる方法は2つあります。自分にあった方法を使ってみてください。
①自分でプログラムを動かして、自分でオリジナルのボットを作る。
②用意されたボットをサーバーに導入する
#自分でプログラムを動かす方法
本項目は以下の条件を満たしている前提で執筆します。
1.Node.js(v14.15.0動作確認済み)がインストールされていて、動作させることができる環境がある
2.コマンドプロンプト・シェルをある程度使える
##ダウンロード
[GitHub](https://github.com/WhitePaper-Network/GreyBot-Voice)からプログラムをZipでダウンロードして、解凍して任意の場所に移動する
![スクリーンショット 2021-08-30 122019.jpg](https://qiita-image-store.s3.ap-nort

元記事を表示

imageminでディレクトリ構成を維持する方法

## 問題
画像を圧縮する際に便利な[imagemin](https://www.npmjs.com/package/imagemin) ですが、吐き出した際にディレクトリ構成を無視してしまうという問題があります。

例えば、

“`
img
├─pc
│ └─pc1.png
└─sp
└─sp1.png
“`

というディレクトリ構成でimgフォルダを指定すると、出力は

“`
pc1.png
sp1.png
“`

となってしまいます。
消えたpcフォルダとspフォルダ…

issueにも上がっていますね。
https://github.com/imagemin/imagemin/issues/191

issueを読む限り内部修正がもうすぐマージされそうな気配なので、
それまでのつなぎとしての処置を考えます。

## 解決方法
ディレクトリを精査して、再帰的にimageminをかけていきます。
(上記issueの@brothatruさんのコードを元に一部調整しています。)

“`javascript
const imagemin = require(‘

元記事を表示

Node.js: 一定時間毎に udp 送信を行う

こちらにある udpclient.js を改造しました。
[Telegraf の入力データフォーマットを JSON にする](https://qiita.com/ekzemplaro/items/780090ca15cfdebc5f1d)

“`js:udp_plural.js
#! /usr/bin/node
// —————————————————————
//
// udp_plural.js
//
// Aug/30/2021
// —————————————————————
‘use strict’

// UDP 接続先
const host = “localhost”
const c_port = 8092
var dgram = require(“dgram”)
var client = dgram.createSocket(“udp4”)

// ———————-

元記事を表示

docker nodejs を利用時にnode_modulesが作成されなくなった

## Description

gatsbyやangularでdockerを利用する際に、OSによりinstall内容が変わるmoduleがあり、手元のnode_modulesをそのままdocker環境で利用した場合にErrorを吐く場合があった。
dockerとlocalの環境で別にinstallしようと思い、docker-ignoreに追加 + docker内部でインストールを実施した際にエラーがでたため対処方法を追記。

#### Refs

関係ありそうだけどさっとしか見なかった。ごめんなさい。

– [yarnpkg/yarn#5500](https://github.com/yarnpkg/yarn/issues/5500)
– [yarnpkg/yarn#2240](https://github.com/yarnpkg/yarn/issues/2240)

## TL;DR

volumesにnode_modulesに追記する。

“`docker-compose.yml
services:
app:
volumes:
– type: vol

元記事を表示

Telegraf の入力データフォーマットを JSON にする

こちらのプログラムの Telegraf の入力フォーマットを JSON に変更しました。プロトコルは udp のままです。
[Telegraf で InfluxDB 2.0 にデータを入れる](https://qiita.com/ekzemplaro/items/1156e8371aea84604d13)

Telegraf の設定ファイル

“`text:/etc/telegraf/telegraf.conf
(省略)
[[outputs.influxdb_v2]]
urls = [“http://127.0.0.1:8086”]
token = “1zIYs1taCm3pWQOBUNk0ssYccOF7YgJcdGyJDbiFYTBf7hcPvyl5nGyt71rNVkYtg2rB
ceUwQ1r5Xzm7Mabcde==”
organization = “ekzemplaro”
bucket = “tochigi”
(省略)
[[inputs.socket_listener]]
service_address = “udp://:8092”
json_name_key = “n

元記事を表示

command not found:nodeエラーが表示されたときの解決方法

#エラーケース
ターミナルでnodeのバージョン確認をするコマンド「node –version」を実行したら、「command not found:node」というエラーが返ってきてしまう。”node”というコマンドが認識されていないみたい。

#解決方法
「node」をインストールすればOK
https://nodejs.org/ja/download/

npmも同様にインストールすればコマンドとして認識されるようになる。

元記事を表示

SORACOM RS-LTECO2 で計測したCO2値を kintone で確認する

![CO2-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/0a44d023-f1c4-5140-c338-5305188308f9.png)

## 概要
ちょっと前に SORACOM RS-LTECO2 を購入して、以下を参考に自宅の仕事場のCO2濃度や室温などのデータを SORACOM Lagoon で可視化までやっていました。

**SORACOM レシピ:IoTで、CO2と温湿度を計測し換気促進**
https://soracom.jp/recipes_index/9972/
![CO2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75892/f9293439-3c2b-8e6c-b26b-b0d94741ce3e.png)
とはいえ、確認のため SORACOM Lagoon をいちいち起動するのは手間で、普段使いしている kintone で CO2濃度や室温などのデータを確認できるように可視

元記事を表示

eslint において、 while(1)で警告が出るのを.eslintrc.json の設定で回避する方法

## 動作環境
“`
$ node -v
v15.14.0
$ npm -v
7.7.6
$ npm list –depth=0
eslint@7.32.0
“`

# 目的
– eslint を使っていて、 `while(1)`を書くだけでeslintの警告が出るのをなんとかしたい。

## コードを変えて警告を回避する方法
– .eslintrc.json 設定を変更しない場合は、以下のように変更して回避する

“`
[NG] while (1) {}
[OK] for (;;) {}
“`

## .eslintrc.jsonを設定して回避する方法
– .eslintrc.json 設定を変更して回避する場合は、以下のように指定する。

“`
“rules”: {
“no-constant-condition”: 0
}
“`

元記事を表示

ニコニコ動画風コメント+アンケートアプリをnode.jsとElectronで作ってみた

# はじめに
– 作成の動機はプレゼンやセミナーがWeb会議にシフトし、会場の空気感を感じない、発表時一人で話してる気がすることから、インタラクティブにしたいと思ったことです。
– この手のアプリでは[CommentScreen](https://commentscreen.com/)があるけど、無料版だと人数やアンケート回数の制限があったり、有料版の社内利用は決裁取得やらが面倒。
– ネットで探してみると似たようなものを開発されてる記事があったので自分なりにカスタマイズして開発してみました。
– Javascriptやnode.jsを扱うのは初めてでしたが、部署内のプレゼンや会議を盛り上げるツールができました。
– 本アプリの作成、記事執筆にあたり非常に参考にさせていただきました。ありがとうございます。[heroku + electron でニコニコメソッドを作ってみました。その2(ルーム分け機能追加)](https://qiita.com/UC-SADA/items/39c43a1b196391a3e9e7)
– 本記事ではアプリの紹介と利用方法を説明します。後日に別の記事で実装し

元記事を表示

Vagrant環境でnpm installができない時に試すべきこと

#目次
– はじめに
– 開発環境
– 前提
– 生じた問題
– 対応策
– まとめ
– 参考記事

#はじめに
この記事では、Vagrantを用いてnpm installを行おうとしたときに生じたエラーについて扱います。
私の開発環境は以下の通りですので、ホストOSがwindows環境の方などは注意してください。
なお、Laravelでの開発を行なっていますが、npmを用いてパッケージ管理をする場合、対処法は共通だと思われます。

##開発環境
ハードウェア

| 項目 | 内容 |
|:-:|:-:|
| OS | mac OS Big Sur 11.5 |
| 端末種類 | MacBook Air (Retina, 13-inch, 2020) |
| プロセッサ | 1.1 GHz クアッドコアIntel Core i5 |
| メモリ | 16 GB 3733 MHz LPDDR4X |
| グラフィックス |Intel Iris Plus Graphics 1536 MB |

ソフトウェア

| 項目 | ホストOSバージョン | ゲストO

元記事を表示

VSCode リモートコンテナの Python3.8 にnvm , nodeのインストールをDockerファイルに記述する

リモートコンテナ用のdockerイメージ(Debian11, Python3.8)の環境でnodeを使いたかったので入れた
いろんなOSさわると、遭遇するエラーもさまざま

– 入れた対象OS

“`
root ➜ /workspaces $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 11 (bullseye)
Release: 11
Codename: bullseye
“`

## Dockerファイルに記載してnvmとnodeをインストール(Rebuild Containerで実行して1分かからず)
– 操作しているユーザー環境変数の設定はしていない
– `apt upgrade` はしなくても良い
– node install ではビルドしない(-s 指定しない)
– install.sh が実行されると、`/usr/local/share/nvm` に nvmが入っていることを気づかずにや

元記事を表示

OTHERカテゴリの最新記事