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

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

$ npm run watch しようとしたら Sorry, there’s a problem with nodist. Couldn’t resolve node version ~~~と出たときの対処法

# 課題
“`
$ npm run watch
“`
しようとしたら
**Sorry, there’s a problem with nodist. Couldn’t resolve node version spec %s: %s 4.5.0 Couldn’t find any matching version**
と怒られた。

なんでだろうと調べたりいろいろ試したりしましたが小1時間ほどハマり心優しい同僚に助けてもらったので覚書しておきます。

# 対処法

**1. nodeのバージョンを確認する**

“`
node -v
v0.0.0
“`

**2. .node-version(node-dev-env\.node-version)を開いて記載されているバージョンを確認する**

私の場合「v11.13.0」と記載されていました。
このバージョンとnode-v したときのバージョンを合わせてやります。

**3. 今適用されているnode.jsのバージョンを確認**

“`
$ nodist
(x64)
> 4.5.0 (C:\xampp\htdocs\h

元記事を表示

Node.jsで動くオンライン対戦リバーシを作ってみた

#ソース
https://github.com/inari2019/osero
正直かなり醜いコードだと思ってます。
#実際に作ったもの
http://pocketmikan.ml:3000/
※予期なくリンクが変わったり、封鎖している可能性があります。
#環境
バックエンド:Node.js(Express.js)
ソケット通信:socket.io
フロントエンド:javascript
描画:HTML5 Canvas
#構成
![無題の図形描画 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/619412/42187d84-17b4-db32-edc7-51a280394bb9.jpeg)

#コードの解説
大体のことはgithubのコードに書いてるので割愛

実行の流れとしては
プレイヤーから駒を置く場所を受け取る(index,js)

駒を置けるか確認したのち駒を置く(modules/gameclass.jsのput関数)

置いた後の盤面データなどをプレイヤーに送信(index.js)

元記事を表示

AWSサーバーレス連絡フォームの作り方?(AWS Lambda、API Gateway、SES)

AWS S3にサイトを安くて簡単にホスティングできますが、S3は静的なサイトしかホスティングできないですので、従来ならバックエンド処理が必要となるフォーム送信の実装などは難しそうですね。しかし、クラウド時代ではそんな心配はありません!ソリューションはサーバーレスアーキテクチャです!AWSはすでに色々なサーバーレス構築のツールを提供しています。

今回はユーザからお問い合わせやフィードバックを送信するたびに、任意な宛先に通知メールを送信するシンプルなサーバーレスメールサービスを一緒に作ります。AWS LambdaとAPI Gatewayを利用し、簡単なAWSサーバーレス構築を紹介します。

構成図はこんな感じです。
![diagram.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665134/fe6fb6dc-e62e-4eaa-0a50-776a74b19ac4.png)

処理の流れとしては、ユーザーから連絡フォームより入力した情報を収集し、クライアント側のブラウザからAmazon API Gat

元記事を表示

GitHub Pagesを使った自前無料ブログの作り方(Hexo)

## 本文の前に
この記事は[まどれーぬ](https://qiita.com/madoreenu)さんの公開された記事[ゼロからわかる!GitHub Pagesを使った自前無料ブログの作り方(Jekyll)](https://qiita.com/madoreenu/items/b47833bf785562c77819)からインスパイアを受けています。ぜひ読んでみてください。とてもわかり易くまとまっています。

※今回の記事はLinux(Ubuntu)で操作を行っています。それ以外のOSをお使いの方は少しやり方が異なる場合があります。ご了承ください。
## この記事でわかること
* [Hexo](https://hexo.io/)というNode.js.製の静的サイトジェネレーターを使ったサイトの制作方法

* Github Pagesでの公開方法

## 余談と事前準備
余談ですがなぜJekyllではなくHexoを使うのかについてです。理由は唯一つ

### **私がRubyを使ったことがなくJSのほうが使いやすかったから**

これだけです(笑)

はい、では事前に準備するものです

元記事を表示

csv-parser モジュールでCSV文字列を処理したい場合の方法

## csv-parser で CSV文字列をパースする。

https://www.npmjs.com/package/csv-parser

上のモジュールで単純なCSV文字列をパースしたい場合はリーダブルストリームを
一旦生成することで csv-parserのインターフェイスを合わせる事ができる。
(もっと簡単な方法がありそう

“` typescript
import csvParser from “csv-parser”
import { Readable } from “stream”

//CSVが格納された文字列
const csvString = `col1,col2,col3
row1,row2,row3
row1,row2,row3`

// Readable Stream を作成
const readable = new Readable({
read:(size) => {
//この処理の記述の必要性が実は良く分からない
return true
}
})

readable.on(“data”,(

元記事を表示

SendGridでいい感じにメールの配信停止グループを管理する

今[個人で開発しているサービス](https://anymake.app/)にメールの配信基盤を整えようと思って色々調べていたので、その結果わかったことを備忘録としてまとめておきます。

## メールの配信停止設定で最低限やっておきたいこと

メールの配信設定を行うにあたって、以下の項目が守られていることが個人的に望ましかったです。

1. 簡単にメールを配信停止できること
2. 自分のサービスとメール配信サービスでメールの配信停止設定を共有できること

### 1. 簡単にメールを配信停止できること

まず、送られるメールは簡単に配信停止できるようにすべきです。[配信停止のベストプラクティスと、SendGrid の便利な機能](https://sendgrid.kke.co.jp/blog/?p=10712)にも以下のように書かれています。

> 1. 簡単に配信停止できるようにする

> 配信停止の手順が簡単であればあるほど、受信者と送信者、双方にとってメリットがあります。配信停止のボタンやリンクをどこに置くか決める時、隠すように配置してはいけません。また、リンクがきちんと機能する

元記事を表示

SiriっぽいTeamsアプリを作ってみる

# はじめに

仕事にしても何にしても使えるものは使っておくに限る。
最近はリモートワークの影響でteamsを使い始めたので、これも使っておきたい。
どうせなら勤怠とかの自動化に使おうとも思ったが、敷居が高そうなので途中から計画変更してSiriにした。
だって、`Siriっぽいもの作った事あります`って言っておけば何かしら仕事もらえるんじゃなかろうか。

# 結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/42445/2339e452-8381-aaf7-dc6f-4bfec2eda6b1.png)
何も分からない俺のSiri

# Teams API

TeamsにはTeamsに蓄えられた情報を扱うためのRest APIが用意されている。

+ [Microsoft Teams API](https://docs.microsoft.com/ja-jp/graph/teams-concept-overview)
+

元記事を表示

typescriptから直接bundle.jsを作成する方法

本記事ではtypescriptから直接bundle.jsを作成する方法について書いていきます。

<今までのbundle.jsの作成方法>
1.tsファイルをコンパイルしてjsファイルを作成
2.jsファイルをbundleしbundle.jsを作成

この流れが面倒なので直接やってしまおう。

1.ts-loaderをインストールする

`npm install –save-dev ts-loader typescript `

2.webpackの設定ファイルに記述

webpack.config.jsにどのファイルにts-loaderを実行するかを記述する。

“`ruby:webpack.config.js
const path = require(‘path’);

module.exports = {
entry: ‘./src/main.ts’, //最初に読み込ませるファイルもtsファイルに変更

output: {
filename: ‘bundle.js’,
path: path.resolve(__dirname,

元記事を表示

typeScriptにWebpackを使用する

※あくまで個人の学習ノートなので参考程度に

1.package.jsonを追加

`npm init -y`

package.jsonが作成される

2.webpackインストール

`npm install –save-dev webpack webpack-cli`

node_moduleのフォルダとpackage-lock.jsonが作成される。

※作成されるnode_moduleはgitにpushしない

3.webpack.config.jsをディレクトリに追加

webpack.config.jsはwebpackの設定ファイル

“`ruby:webpack.config.js
const path = require(‘path’); //requireはimportと同じ扱いでpathはnodejsがもっているモジュール

module.exports = {
entry: ‘./dist/main.js’, //一番最初に読み込ませるjsファイル

output: { //生成したファイルをどこに格納するかを指定

元記事を表示

MAC:node.jsでmysqlへ接続する

node.js から mysqlに接続するのに苦労しましたので覚書をします。

##環境
macOS : 10.15.5 (Catalina)
node.js : v14.3.0
mysql : ver 8.0.19

#mysqlインストール
“`shell:shell
$ brew install mysql
“`
でインストールされました。
(他の情報でmpnを使用するやり方が書いてありましたが、私の環境では起動ができませんでした)

##コネクションを実行するコード
“`javascript:mysqlconnection.js
//————————————————————
// my sql connection
//————————————————————
var mysql = require(‘mysql’);

//DBの定義
var dbConfig = {
host

元記事を表示

【アプリ編】textlintではじめる自動文章校正

###textlintとは

**textlint**(テキストリント)は、設定した校正ルールに基づいたミスの指摘・修正を自動化するツールです。

本来はコマンドプロンプト等の『黒い画面』からインストールして使うのですが、作者の方([@azu_re](https://github.com/azu)さん)がより使いやすいデスクトップアプリ版をリリースしてくださっています。
こちらで十分な方にとっては圧倒的におすすめです。

#アプリのダウンロード

https://github.com/textlint/textlint-app/releases/tag/v1.4.1

↑こちらのページからインストーラをダウンロード、実行します。

アプリを開くとこのような画面が出ます。▼
スクリーンショット 2020-07-07 11.47.51.pngbrowser-syncのport番号をランダムにする

複数の案件を同時に進めている都合上、複数個の[browser-sync](https://www.npmjs.com/package/browser-sync)を同時に走らせたいときportが衝突してイライラしちゃうので、そもそもportをランダムにしとけばいいんじゃないか説。

他にいい方法があれば教えてください。。。

“`js
// browser-sync.js
module.exports = () => {
const path = require(‘path’);
const browser = require(‘browser-sync’).create();

browser.init({
files: [
// 監視したいファイルのパターンリスト
],
// 動的・プライベート ポート番号からランダムで
port: Math.floor(Math.random() * (65535 – 49152)) + 49152,
startPath:

元記事を表示

FXトレーダーコミュニティをslackワークスペースで作った話(前編)

#作ろうと思ったきっかけ
去年リリースされたLINEオープンチャット
他の興味も含め興味があるジャンルのオプチャにあちこち入った
そのうちの一つがFXのオプチャで
たまーに覗いていた程度だった。2月3月ごろコロナの影響で為替が大きく動いた時にちょっと
真剣に覗いてみたところトレンドの解説などをかなり詳しくやってくれている人が何人かいて
参考にトレードをしたりしていた。
しかし毎日オプチャを見ていると
いくつかの不自由さに気づく。

`一つのタイムライン
`

まず一つはさまざまな話題が一個のタイムラインに溢れかえっていること
超初心者の自分でググれよみたいな質問だったり
だれかれ構わず粗探しをしたいクレーマー気質な人とそれと戦い続ける人の無駄なやりとりだったり
ロングしました、ショートしました!と張り切って伝えてくれている人がいるのはいいものの
ぱっと見でドル円の話をしているのかユーロポンドの話をしているのかが伝わりにくいかった。
職業柄かもしれないがこの情報が整理されていない状態がすごくストレスだった。

`人間しか投稿できない煩わしさ
`
本業ではもちろんslackをバリ

元記事を表示

Node.js でAWS Lambdaを量産する為のサンプルソースをgithubに公開してみた

# AWS LambdaをNode.jsで量産アレコレ
## 概要
AWS LambdaをNode.jsで書こうと思ったときに、良く思うのが、、、

– AWS SDKがPromise前提で入れ子が深くなりがち
– 継承使って汎用共通処理とオーバーライド使いたいなぁ~

である。

コールドスタート対策などで、javaでの実装は圧倒的に不利ってことで、java屋がNode.jsでLambdaを書こうと思うと、~~きっと同じ事を思うに違いない。~~(偏見)

という事で、上記が出来る汎用ソースをgithubに公開してみました。

(参考投稿)
[Lambdaのコールドスタートを改めて整理する](https://qiita.com/ny7760/items/700ae917da2c5b5e3f8a)

## index.js の処理構造
![indexのイメージ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/660954/37a78f07-3911-41ee-1e6e-3c8c76016bb6.jpeg)

元記事を表示

Node.jsを使ったECS上でのTCPアプリケーションの構築

このチュートリアルでは、**Alibaba Cloud** ECSを使って**TCP**クライアント/サーバのペアを作成し、**Node.js**を使って**TCP**アプリケーションを構築していきます。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/node-js-tcp-app-development-on-ecs_594176)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

Alibaba Cloud Tech Share執筆者のKunal Relanによるものです。Tech Shareは、クラウドコミュニティ内で技術的な知識やベストプラクティスを共有することを奨励するAlibaba Cloudのインセンティブプログラムです。

まず基本的なことから説明すると、オープンソースのJavaScriptランタイム環境として人気のあるものに、ChromeのV8 JavaScriptエンジン上に構築されたNode.jsがあります。Node.

元記事を表示

GithubのissueをAPI経由で作成する

issue管理大変ですよね。

複数のissueを一気に登録したり、システムと連携してイベントベースでissueを登録できたりすると、issueを管理するのがずっと楽になります。

node.jsで実装しているので、AWS Lambda経由で実行するといろんなイベントから呼び出せて汎用性が高そうです。

# 使うもの
octkitというGithubAPIクライアントのライブラリを使います。
https://developer.github.com/v3/libraries/

ドキュメントも豊富で使いやすいです。

# 実装

“`javascript:create_issue.js
const { Octokit } = require(“@octokit/rest”);
const dotEnv = require(‘dotenv’).config();
const octokit = new Octokit({auth: dotEnv.parsed.ACCESS_TOKEN});

if (process.argv.length !== 4) {
console.log(‘

元記事を表示

Node.js + Express + PhpStormでWordpressの投稿をWP REST APIを使って表示する

#PhpStormでNode.js Express Appを新規作成
File -> NewProject -> Node.js Express App

この時のオプションは以下の通りです。
Options
– View Engine: EJS
– Stylesheet Engine: Plain CSS

#terminalで WP APIをインストール

“`shell
npm install wpapi –save
“`

# routes/index.jsを編集

“`javascript
var express = require(‘express’);
var router = express.Router();
var WPAPI = require( ‘wpapi’ );
var wp = new WPAPI({ endpoint: ‘https://localhost/my-local-test/wp-json/’ });

/* GET home page. */
router.get(‘/’, function(req, res, next) {

元記事を表示

console.logで配列やオブジェクトが省略されてしまうときはconsole.dirを使おう

`console.dir`の第2引数にオブジェクト`{depth: null}`を渡すと深い階層も省略されずに全部見れます。

[Node.js console.dir](https://nodejs.org/docs/latest-v12.x/api/console.html#console_console_dir_obj_options)

“`js
const menu = {
main: {
currey: 500,
udon: 450,
rice: 150
},
side: {
soup: {
misoshiru: {
wakame: 250,
asari: 250
},
potage: {
corn: 250,
potato: 250
}
},
dessert: {
icecream: {
vanilla: 100,
chocolate: 100

元記事を表示

Node.js: Starttls でメールの送信

こちらと同じことを Node.js で行いました。
[Python3: Starttls でメールの送信](https://qiita.com/ekzemplaro/items/c248b52a6f36947af080)
hi-ho.ne.jp で試しました。

“`js:hi-ho.js
#! /usr/bin/node
//
// hi-ho.js
//
// —————————————————————
‘use strict’

const dotenv = require(‘dotenv’)
const nodemailer = require(‘nodemailer’)

console.error (“*** 開始 ***”)

dotenv.config()

const env = {
server: `${process.env.SERVER}`,
port: `${process.env.PORT}`,
usr: `${process.env.USR}`,

元記事を表示

Node.jsのAPIをまとめてみた

#はじめに
先週ぐらいからNode.jsの参考書を読み始め、途中から
「**■■ = require(‘〇〇’)**」
というのが連発してきて、いろんな種類のAPIが使えるのだと知りました。

参考書の最初は「require(‘events’)」や「require(‘http’)」を使っていて、
他にどんなAPIが使えるのか気になり、一覧としてまとめてみました。

※初学者のため誤りがあると思います。
 間違いはコメントしていただけると幸いです。:bow_tone1:

#本題の前に
本題の前に、「**require**」について少しだけ触れておきます。

requireとは、**モジュール化されたJavaScriptのファイルをNodeから読み込んで利用できるようにしてくれるもの**です。

npmを使ってインストールしてきたパッケージを利用する際にもこの「require」を使用します。

著者は普段、C言語を使用していますので、この「require」はC言語のインクルードみたいなものだと理解しています。(あくまでもイメージです。)

本記事は、Nodeをインストールしたらデフォル

元記事を表示

OTHERカテゴリの最新記事