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

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

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】現在日時を取得する方法3選

# 目標

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

“`
$ node index.js
202101082341
“`

# 前提

Node.js 14.15.4
date-utils 1.2.21
moment 2.29.1

# 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() + 1)).slice(-2);
const d = (‘0’ + date.getDate()).slice(-2);
cons

元記事を表示

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 => {
const args = message.content.slice(prefix.leng

元記事を表示

【初心者向け】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内にどれぐらいいるのか

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

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

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

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

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

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

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

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

元記事を表示

EC2(AmazonLinux2)でnode.jsを起動するまでの過程記録(nodemonを使う)

###前提として行ったこと
①AWSへの登録
②EC2サーバーの新規立ち上げ
③RDBの新規構築
④ローカル環境で制作したフォルダの、EC2へのアップロード

今回はnodemon を使いました。
これによってシステムの内容に変更があった時、再起動しなくても適応される(はず)。

以下、EC2サーバー上で正しく動作させるために行ったことを記録する。
##目次
行ったこと
→パーミッション設定
→「npm start で起動するようにする」
→必要なもののインストール
→DB情報の書き換え
→エラー「Permission denied」
→nodemonのインストール
おまけ(永久実行)
参考文献

#行ったこと(失敗も含む)
##パーミッション設定
編集したいファイルは、フォルダごと権限を777にした。
“$sudo chmod 777 フォルダ名orファイル名“
権限を変えるのは危ないので「ローカルで書き換えてアップロード」を繰りかえす方

元記事を表示

3分でできる Node.js + TypeScript + Jest プロジェクトの雛形作成

 こんにちは、mballです。
 つい最近転職をしまして、がっつりTypeScriptを触るようになったので学習も兼ねて、備忘録を残したいと思います。
 今回はタイトルの通り、一からNode.js + TypeScript + Jest のプロジェクトを作成する際の手順をご紹介します!

# 初期設定

まずは `package.json` を作成します。

“`shell
$ mkdir node-typescript-test/
$ cd node-typescript-test/
node-typescript-test$ npm init -y
node-typescript-test$ ls
package.json
“`

次に、 Node.jsとTypeScriptに関わる必要なモジュールをインストールします。

“`shell
node-typescript-test$ npm install typescript –save-dev
node-typescript-test$ npm install @types/node –save-dev
node-ty

元記事を表示

Markdown正規表現全文検索ツール「Note-CLI」をリリースしました。

Markdown正規表現全文検索ツール「[Note-CLI](https://github.com/yuis-ice/note-cli)」をリリースしました。

以下かんたんな日本語版クイックスタートになります。

> Markdown Indexing and Pcre Regular Expression Compatible Full Text Searching for Advanced Note Takers.

ノートテイキング上級者のためのMarkdownインデックスとPCRE正規表現対応の全文検索システム。

## クイックスタート

“`sh

# データベースへMarkdownファイルをインデックス indexing file
./note-cli.js –index –database notes.db.example –file notes.md.example

# データベースで正規表現でキーワード検索 searching for keywords by regular expression
./note-cli.js –search –dat

元記事を表示

Node.jsを勉強する⑤ – JSONファイルの書き込みと読み込み

##はじめに
前回は、 [npmモジュールの使い方](https://qiita.com/arata0520/items/91c47ea8742efee32a64)についてまとめました。
今回は、JSONファイルの作成と読み込みを記事にします。

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

##データをJSONファイルに書き込む
まずは、app.jsファイルを作成して、Javascriptのオブジェクトを作成します。変数personを定義し、代入しておきましょう。

“`javascript:app.js

const person = {
name: “Taro”,
age: 25
}
“`

次に、このデータをJSONファイルに変換してみます。
変換には、JSON.stringify()というメソッドを使います。データは変数のpersonJ

元記事を表示

園バス待ち中、忘れ物今取りに帰っても大丈夫?が目に見える仕組み!

幼稚園に子供を通わせて9年目、3児のママです。
幼稚園バスのあるあるだと思うのですが

・忘れ物!まだ取りに帰っても間にあう?
・出かけにモタモタ。バス行っちゃった?
・急にトイレ!家に一度帰っても大丈夫かな?

などなど、幼稚園バスの居場所がすぐにわかれば良いのにな~と思ったことが何度もあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/820683/291f94c9-fb51-4e96-72e0-ee80ed29f0fd.png)

知りたい時に幼稚園バスの居場所がわかると

・雨の日、寒い日、終わりが見えずに待ち続けるという事がなくなり
・忘れ物など、一度家に取りに帰る事が出来たら、園まで後から送っていかなくても済んだり

メリットは沢山あると思います。

そこで、幼稚園バスの居場所をアプリのインストール不要!LINEからバスの位置情報を受け取れるサービスの開発をしていきたいと思います。

#全体のイメージ
![image.png](https://qiita-image

元記事を表示

OTHERカテゴリの最新記事