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

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

NodejsでWebアプリケーション作成 with Docker

# 前提
ProgateのNodejsコース完了程度の知識があること。
Docker使える。
[VSCodeでDocker入門](https://qiita.com/Teach/items/ca09b8882f519dca600c)

# 本記事の対象者
ProgateでNodejs学んだ。次は自分のプロジェクトを作ってみたいって人

# 本記事でやること

– DockerでNodejs環境を作る
– プロジェクトの作成
– ライブラリのインストール
– ブラウザ上でページを確認

# 環境
Docker
VSCode
Node 14.15
Git

# プロジェクトの作成

まず適当な場所にプロジェクトのフォルダを作成。
本記事では `nodejs-sample-app` という名前で作った。

そして、そのフォルダをVSCodeで開く。

以下のファイルを作成

“`docker-compose.yml
version: “3”
services:
node:
image: node:14.15
volumes:

元記事を表示

expressをESモジュールに変更する手順(babel利用)

# 目的
フロントエンドはESモジュール形式で記載するのに、バックエンド側はrequire()を使うという課題?を揃えたいという願望です。
(babelにするかtypescriptにするかで悩んでいます)

* 実現したら、おまけにsequelizeも追加するかも

## 結果
* exportしたモジュール(ESM)はimportする、module.exportの場合(node)はrequire()を利用するということに気を付ければ、混在していても問題なく動きました。

## 実現手段
* expessをES6(import)で利用できるようにするため、babelでトランスパイルする。
⇒package.json に 「type: module」を追加すればESモジュールを使えますが、jsファイルの拡張子(.cjs、.mjs)の切り分けが面倒なのでbabelにします。

* express-generatorでひな形を生成する。
* 開発時は「babel-node」で実行(ビルド不要)可能とする。トランスパイルしたjsファイルが必要な場合はbuildを行う。
* sequelizeと

元記事を表示

Node.jsを勉強する⑦ – npmモジュールyargsを使った引数のオプションの処理

##はじめに
前回は[コマンドライン引数の受け取り](https://qiita.com/arata0520/items/9acf3d56f78d5a056ce1)についてまとめました。
今回はnpmモジュールyargsを使ったオプションの変換を記事にします。yargsを利用することで、ターミナルでコマンドを実行する際に、引数のオプションを入れた場合、それを引数として変換できます。

##教材
Udemy
The Complete Node.js Developer Course (3rd Edition)
https://www.udemy.com/course/the-complete-nodejs-developer-course-2/

##解決したいこと
processを用いることで、コマンドライン引数の受け取りはできましたが、引数のオプションを入力しても上手く変換されません。
まずは、こちらから見ていきましょう。app.jsというファイルを作成し、コマンドライン引数がconsoleに表示されるようにコードを書きます。

“`javascript:app.js
consol

元記事を表示

メンバーをBANする方法 Discord.js(GBAN前編)

#サーバーから人をBANする方法
荒らす人、イライラする人にはBANができます。
その動作をBOTにさせる方法を教えます!
##動作環境

| バージョン | サービス
|:———–|:————
| v.12以上 | Glitch

##document
公式ドキュメント(英語):[Link](https://discord.js.org/#/docs/main/stable/class/GuildMemberManager?scrollTo=ban)

##動き方

`!ban メンションorID`

理由を聞く(BANをする理由)

BAN完了!

##コード
“`js
const discord = require(“discord.js”);
const client = new discord.Client();
const prefix = “!”;//ここは好きに変えてもいいです

client.on(“message”, async message => {
if (!message.content.match(/

元記事を表示

(小ネタ)TypeScriptで型定義ファイルが無いモジュールの読み込み方法

# はじめに
ml5を利用しようとしたところ、型定義が無く、エラーが発生したため、型定義が無い時のモジュールの読み込み方法について調べました。
*なお、ml5の型定義は現在draft版を作成中。
https://gist.github.com/dikarel/38a12ce263199a41ad67c15eac7f4b45

# 型定義が無い時のエラー
ml5を以下のようにモジュールをインポートするとエラーとなる。

“`typescript
import * as ml5 from “ml5”;
“`

具体的には以下のようなコンパイルエラーが発生する。

“`console
Could not find a declaration file for module ‘ml5’.
Try npm install @types/ml5 if it exists or add a new declaration (.d.ts) file containing declare module ‘ml5’;
“`

# 型定義が無い時の読み込み方法
型定義ファイル( `d.ts` )を自

元記事を表示

npmに自作モジュールを公開する方法

# はじめに

先日Node.jsの勉強中にnpmについて改めて学ぶ機会がありました。その際npmにサンプルのモジュールを公開したので、具体的なやり方をシェアします。

# npmとは

Node Package Managerが正式な名称です。その名の通りNode.jsのパッケージを管理するためのツールです。ホームページは下記リンク先からアクセスできます。

[https://www.npmjs.com/](https://www.npmjs.com/)

npmはNode.jsをインストールする際にインストールされます。インストール済みの場合、下記コマンドでバージョンが表示されます。

“`
npm –version
“`

# npmに自作モジュールを公開する方法

## 公開までの流れ

流れは下記の通りです。

– npmのアカウントを作成する。
– 公開したいモジュールを作成する。
– npmへログインする。
– npmへ公開する。

それでは1つずつ見ていきます。

## npmのアカウントを作成する

まずはnpmのアカウントを作成します。下記リンク先からSign

元記事を表示

NimのコードをNode.js用のJavaScriptコードにトランスコンパイルする

# 概要

– NimのコードをJSバックエンドでコンパイルしてNode.jsのスクリプトとして実行してみます
– NimのコードからNode.js用のライブラリを生成してNode.jsから関数を呼び出してみます

# NimはJavaScriptを生成できる

Nimは公式でNimのコードからJavaScriptのコードにトランスコンパイル可能です。

例えば、以下のようなNimコードに対して

“`index.nim
proc plus*(x, y: cint): cint {.exportc.} =
return x + y
“`

以下のコマンドでコンパイルします。すると、`index.nim`から`index.js`が生成されます。

“`bash
$ nim js index.nim

$ ls index*
index.js index.nim
“`

このようにJavaScriptコードを生成できます。

しかしここで生成されるJavaScriptはフロントエンド用で、HTMLから読み込む想定のものです。
Node.jsからは扱うことはできません。

# N

元記事を表示

herokuデプロイ後sequelizeでPostgreSQLに接続できないときの解決法

sequelizeを使ってPostgreSQLと接続したい。

ローカル環境では接続に成功していたが、herokuにデプロイした後は失敗する。

## 失敗

“`JavaScript
const Sequelize = require(‘sequelize’);

// herokuまたはローカル環境のPostgreSQLに接続する
const sequelize = new Sequelize(process.env.DATABASE_URL || ‘postgres://postgres:postgres@localhost/hogehoge’);
“`

## 成功

“`JavaScript
const Sequelize = require(‘sequelize’);

const sequelize = new Sequelize(
process.env.DATABASE_URL || ‘postgres://postgres:postgres@localhost/hogehoge’,
{dialectOptions: { ssl: true }}
);

元記事を表示

【Node.js】現在日時を取得する方法4選

# 目標

Node.jsで現在日時をYYYYMMDDHHmmssの14桁のフォーマットで出力します。
nodeコマンドで下記のような出力が得られるプログラムですね。

“`
$ node index.js
202101082341
“`

# 前提

Node.js 14.15.4
date-utils 1.2.21
moment 2.29.1

# 更新情報

【2020/01/09 toLocaleStringメソッドを利用 追加】
@il9437 様、ありがとうございます!

# Javascriptで頑張る

“`javascript:index.js
const date = new Date();
const currentTime = formattedDateTime(date);
console.log(currentTime)

function formattedDateTime(date) {
const y = date.getFullYear();
const m = (‘0’ + (date.getMonth()

元記事を表示

discord.jsでURLの安全性チェックコマンドを作る

# 今回作るもの
1.discord上でURL解析を行うコマンドを実行
2.メッセージからURLを取り出す
3.node-fetchを利用してNortonSafeWebでサイトの安全性をチェック
4.結果をサイトのHTMLから取得
5.“1“が送信されたチャンネルに結果を送信

# 必要なもの
・node.js => [node.js](https://nodejs.org/ja/)
・discord.js => “npm i discord.js“
・node-fetch => “npm i node-fetch“
# コード
“`js
const discord = require(“discord.js”);
const fetch = require(“node-fetch”);
const client = new discord.Client();
const prefix = “!”

client.on(“message”, async message => {
if (!message.content.startsWith(prefix)) return

元記事を表示

【初心者向け】Windows 環境で npm を導入する

npm を知らない人が、Windows 環境に npm を新規導入してみます。

## 導入環境
– Windows 10 64bit
– Windows コマンドプロンプト (cmd.exe) をある程度使えることを前提とします

## 概要

### npm (Node Package Manager)
– npm は、元々は Node.js というサーバサイド処理を行う JavaScript プログラムの中で利用されるモジュールパッケージの管理ソフトウェアです。
– つまり、Node.js をインストールすれば npm も一緒にインストールされます。
– npm でインストールできるモジュールパッケージは、オンライン上の npm レジストリサービスに登録されています。
– npm レジストリサービスは、Node.jsで使用するものに留まらず、様々な言語や分野のパッケージが豊富に公開されており、世界最大のパッケージレジストリとなっています。
– npm パッケージはソフトウェア開発者にとって有用な物が豊富にあり、システム開発では必須のものとなっています。
– そのため、フロントエン

元記事を表示

Node.jsを勉強する⑥ – コマンドライン引数の受け取り

##はじめに
前回は[JSONファイルの書き込みと読み込み](https://qiita.com/arata0520/items/7daf0b37bfd6c95c8b16)についてまとめました。
今回は、コマンドライン入力した引数をjsファイル上で受け取って使う方法を記事にします。
##教材
Udemy
The Complete Node.js Developer Course (3rd Edition)
https://www.udemy.com/course/the-complete-nodejs-developer-course-2/

##引数配列の受け取り

まずは、app.jsという名前のファイルを作成します。コマンドラインから引数を受け取るには”process”を使います。
processだけでも作動しますが、入力した以外の膨大なデータを受け取っているので、”argv”を用いて、引数だけに、表示範囲を狭めます。
argvはargument vector(引数の配列)を意味します。今回はconsoleに出力します。

“`javascript:app.js
console

元記事を表示

【備忘録】puppeteerでurl取得

ご無沙汰してます。おおのんです。

URL取得する方法メモ。
現在ページのURLが期待値と比較したいけど、なぜか取得できない。

“`javascript:url取得できない例
let puppeteer = require(“puppeteer”);
let browser;
let page;

beforeAll(async () => {
browser = await puppeteer.launch({
args: [“–disable-web-security”],
headless: false,
slowMo: 30
});
page = await browser.newPage();
jest.setTimeout(20000);
});

afterAll(() => {
browser.close();
});

describe(“TEST”, () => {
test(“toMypage”, async () => {
// 画面移動
await page.goto(“http://loc

元記事を表示

メール機能ってどうやるの?amazonSES編

はじめに

前回に引き続き、メール機能について学習したのでアウトプットしていきます
今回はAmazon SESを使っていきます
Amazon SESを使う前提として

>- [AWS にサインアップ](https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/sign-up-for-aws.html)

(AWSアカウントをすでに作成済みの方はOKです!)

>- E メールアドレスまたはドメインの確認(ID検証)

Amazon SES の使用を開始した時点では、E メールを送受信するためには、Amazon SES メールボックスシミュレーターと検証済み E メール ID のみであるためです。
[今回はEメールアドレス検証を行っていきます。](https://console.aws.amazon.com/ses/)(ドメインの場合も同様)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws

元記事を表示

暮らしを良くするIoT① 〜テレビに近づくな!〜

はじめての投稿です。
今年は母艦もMacBook Pro M1 にしたので(10年ぶりのmac更新)
発信を積極的にしてみようかなという目標です。

仕事でIoTデバイスの開発をしていますが、
自分の子供たちにも電子工作ちっくなものに触れさせようという事で
「暮らしを良くするIoT」と銘打ち、
自宅の困った事を電子工作を使って解決していこうと思いました。
##困りごと
子供がテレビの近くから離れない。目が悪くなる!
##解決方法
テレビに近づいたら怒られるようにする。(怒り疲れたので)
##設計
手持ちのデバイスを色々見回して、下図のような感じで設計。
![001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/920910/598b87ab-9b89-6cc3-955b-65636018815e.png)

| 使用デバイス | 用途 | 備考 |
|:———–|:————|:————|
| RaspberryPI 3B+ | ハブ

元記事を表示

M1 Mac node.js v15 と Intel Mac node.js v14 で package-lock.json の lockfileVersion が違う

Apple Silicon M1 arm64 aarch64 Mac 環境の node.js v15 では、
npm v7 によって package-lock.json が `”lockfileVersion”: 2` になる。

従来の Intel x64 amd64 Mac 環境などの node.js v14 では、
npm v6 によって package-lock.json が `”lockfileVersion”: 1` になっていた。

v14 と v15 を併用する場合は、npm のバージョンを揃えたほうが良さそう。
当面 production で npm v6 を使うなら

“`sh
npm install -g npm@6
“`

として、M1 Mac 側を v6 にダウングレードすることで、バージョンを揃えることができる。

元記事を表示

Node.jsでSMSをバッチで送信

このポストで簡単なSMSバッチ送信方法を紹介したいと思います。

最近SMS送信できるAPIが増えてきていると思いますが、大体1通ずつの送信になっています。APIを提供されている会社の中、Vonageという会社があります。VonageのSMS APIも1通ずつの送信になっていますが、バッチ送信のサンプルコードも提供しています。このサンプルを使ってみようと思っています。[https://github.com/nexmo-se/simple-sms-blaster](https://github.com/nexmo-se/simple-sms-blaster)

![Screen Shot 2021-01-07 at 15.39.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/683316/6494598b-1ce4-4454-afb5-6cf28579efc1.png)

このサンプルはNode.jsで書かれていて、マイクロサービスとしてデプロイするのは簡単にできると思います。このSMSバッチ送信サ

元記事を表示

【Windows】WSL2+Ubuntu+Node.jsの環境構築

「Windowsマシンしか持っていないしMacを買う金銭的余裕がない…でもちゃんとした環境でWeb開発がしたい」ということで、Windows環境でもLinuxベースの開発環境を構築する方法を備忘録がてら書いておきます。

今回、React本である『りあクト!』という書籍を参照し、環境構築を進めていきます。

## なにはともあれWSL2をインストールしよう
「WindowsでWeb開発なんてオワってる」と言われて久しい昨今、そんな状況を打破するためにMicrosoftが本気を出し、Windows上でLinuxを触る際のシステムを大幅アップデートしてくれました。その名も**WSL2(Windows Subsystem for Linux 2)**!

[WSL 1 と WSL 2 の比較](https://docs.microsoft.com/ja-jp/windows/wsl/compare-versions)

要約すると、**省メモリかつ高速で、完全なLinuxカーネルがWindows上で動く**ようになったとのこと。

WindowsでUNIX系OSを触りたい場合は、このWSL2

元記事を表示

ElectronでGeoPackageを使う

# GeoPackageとは
界隈では長らくデファクトスタンダードのフォーマットであった`ESRI Shapefile`を駆逐する可能性を秘めた新世代フォーマット。
OSSの代表的なGISソフトウェアであるQGISでは3系バージョンから標準サポートされている。
その他GDAL、GeoToolsなど標準ライブラリなどもサポート済み。

## Shapefileの何が嫌か
### 1レイヤーを格納するのにファイルが多い
最低でも3つ、場合によってはそれ以上のファイルが必要となり、レイヤー数が増えると煩雑に…
以下ESRIのサイトより引用
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/44921/8265a0a3-21d8-bbf0-e80a-a9fb888834b8.png)

### ファイルサイズ、属性名のサイズの制限がきつい
ファイルサイズが2GBまでとか、属性名が日本語だと5文字までとか前時代的。
イマドキこんなサイズ制限に悩まされるなんて嫌だ。
![image.png](https

元記事を表示

「エンジニアに向いている人」はGitHub user内にどれぐらいいるのか

## 注意
– この記事はとあるツイートを話題にしていますが、筆者にツイート内容、およびツイートされた方を蔑む意図は一切ありません。
– 筆者は統計、およびプログラミングに関してはまだまだひよっこです。したがって誤った見解や拙いコードを書いている可能性がありますが、お気づきの際は是非コメントにてご指摘ください。

## 背景
あけましておめでとうございます!
正月休みもあけ仕事も始まりましたが、みなさまいかがお過ごしでしょうか。

さて、正月早々、とあるツイートが反響を呼びました。

> プログラミングスクール通ってるかどうかとかどうでもよくて、この年末年始にコード全く書いていない人はエンジニア向いてないんじゃないですかね、それぐらい好奇心が必要な職業だと思うけど

賛否両論あったこのツイートですが、内容はさておき、私はあることが気にかかりました。

**「果たしてこの年末年始、コードを書いた人はどのぐらいいるのだろうか」**

本記事では上記の疑問を検証していこうと思います。

## レギュレーション
もちろんすべてのエンジニアに「この年末年始、コード書きましたか?」ときいてまわるわ

元記事を表示

OTHERカテゴリの最新記事