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

Node.js関連のことを調べてみた2022年01月25日
目次

Notion API + LINE + AWS Lambda他でメモ内容をLINEにしゃべらせる

# 野望
相も変わらずNotionをDBに用いたLINE Bot的なものが作りたいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/455207/7acc353d-96ab-d5a0-8a5d-289b8e41e0c0.png)

# 前回のあらすじ
Notion APIの前にまずはLINE Messaging APIの検証から始めました。
どうやら用意したLINE公式アカウントで受信したテキストをもとに応答をすることができるようになったっぽいです。
https://qiita.com/DJROU/items/900e3c32b87b5d43d8ed

# 今回やったこと
いきなりNotionを繋げて読み込みと書き込みをできるようにするのは荷が重いので、LINE公式アカウントに対してユーザが送ったテキストをNotionで検索した結果を返せるようにしました。
指定したDBのキーに対する値がゲットできるところまでのお試しです。

![image.png](https://qiita-im

元記事を表示

VSCode+Textlintで文章校正をする

# はじめに
Visual Studio Code(VSCode)+textlintで文章校正をするための導入手順です。

## 環境
* Windows11 64bit
* Visual Studio Code version 1.63
* Node.js v16.13.2
* npm 8.1.2
* textlint v12.1.0

# textlintとは
文章を書く時に表記揺れや誤字脱字、読みにくい表現などを校正してくれるツールです。

公式サイト
[textlint · The pluggable linting tool for text and markdown](https://textlint.github.io)

Qiitaの記事の下書きを、VSCodeを使ってMarkdownで書くことが多いのですが、textlintを使用すれば自動で文章校正ができます。
![textlint_demo](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/230850/7a6e4494-21af-4fa1-7

元記事を表示

CORS(オリジン間リソース共有)とは?

# エラー発生
フロントエンドとバックエンドを通信させた時、このようなエラーが発生したことはありませんか?
![スクリーンショット 2022-01-24 15.56.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1801469/6114e564-627f-d8ca-cb20-6fdbc7168d06.png)
なんだかコードは間違ってなさそうだな、なんのエラーだろう、CORSって書いてある、、、と初見の人は思うと思います。

# CORSって?
**CORS(Cross-Origin-Resource-Sharing)オリジン間リソース共有**
追加の HTTPヘッダーを使用して、あるオリジンで動作しているウェブアプリケーションに、異なるオリジンにある選択されたリソースへのアクセス権を与えるようブラウザーに指示するための仕組みです。

ふむふむ、、、

オリジンとは?
何かしないとアクセス権がないのか?

# オリジン
URLの「スキーム」「ホスト」「ポート」の3つの組み合わせたものです。
![ス

元記事を表示

Webの勉強はじめてみた その25 〜Heroku編〜

N予備校「プログラミング入門Webアプリ」を受講しています。
今回は第3章17節です。

Herokuとは

:::note
Heroku(ヘロク)とは、Web サービスを動かすことのできるプラットフォームを提供しているサービスのこと
:::

Heroku CLI をインストールすると、`heroku`コマンドが使える。

サーバーの作成

下準備

Heroku へのログイン
`heroku login`
Dockerを利用するために Heroku Container Registory へログインする
`heroku container:login`

Dockerfileに以下を追記。
今回は以前作ったhubotを登録してみる。

“`Dockerfile
COPY . /home/praise-bot
CMD [“sh”, “run.sh”]
“`

`docker-compose`をしてマウントされていた処理を、herokuでは`Dockerfile`自体に記述。

`run.sh`に起動時の処理を書く。

“`she

元記事を表示

pm2のインストールではまってしまった人へ

# 結論

お使いのyarn.lockやらpackage-lock.jsonを削除してみよう。

# どうしてこうなったか

インストール時にyarnがダメだったからnpmとかまたはその逆とかでインストールしていたなあ。という記憶が蘇ってきたので多分それ。

元記事を表示

久々にAzure Functionsを触ろうとして出たエラーなど

久々にAzure Functionsを触ろうとして雰囲気だけしか覚えてなくエラーが出たので回避メモなど残しておきます。

## 基本の手順

https://fwywd.com/tech/azure-functions-basic

この記事どおりにハローワールドしようとしてます。

## Azure Functions Core Toolsのバージョンによるエラー

現時点でAzure Functionsで利用できるNode.jsは16系が最新っぽいので16系を使おうとしましたが以下のエラー

“`bash



Azure Functions Core Tools
Core Tools Version: 3.0.3233 Commit hash: d1772f733802122a326fa696dd4c086292ec0171
Function Runtime Version: 3.0.15193.0

[2022-01-23T12:06:20.317Z] /usr/local/Cellar/azure-functions-core-tools@3/3.0

元記事を表示

Angular Update 10 → 12のあれこれ事件簿

とあるPRJにて、Angular 10 → 12のUpdateの際にいくつかハマったので備忘録として残しておきます。

# ざっくり環境
Angular 10 → 12
Node.js 12.10 → 12.22
TypeScript 3 → 4
webpack 4 → 5
…その他もろもろ

# 前提
・Angularのビルダーを変更
“`angular-devkit/build-angular → angular-builders/custom-webpack
“`

# 地道なバージョンアップ対応
Angularのバージョンアップに伴いNode.jsのバージョンも最低限上げないといけないなどその辺りの依存関係の調整を地道に行い、TypeScriptのバージョンアップに伴う既存ソースの微修正など対応した。そこまではよかったのですが。。。

# webpack 5系の罠
今回のAngularプロジェクトでは直接的にwebpackは使用していませんでしたが、custom-webpackなどAngularで使うパッケージにwebp

元記事を表示

GitHub PackagesでNode.jsのDockerイメージを管理する

早いもので1月もあと10日ほどで終わりですが、今年の冬は寒くリモートワークが有り難くも感じています。

節分の頃には、春に向けて期待が膨らませられる出来事が増えますように。

さて、
今回はこちら[Managing Node.js Docker images in GitHub Packages using GitHub Actions](https://snyk.io/blog/managing-node-js-docker-images-in-github-packages-using-github-actions/)を紹介します。

開発ですでにGithubは使っている方は多いと思いますが、node.jsのDockerイメージ管理についてのブログ記事の翻訳をご紹介いたします。

#GitHub Actionsを使ってGitHub PackagesでNode.jsのDockerイメージを管理する

リランタル
2021年7月13日
今日オープンソース開発を行っている場合は、GitHubコミュニティ内でアクティブになっている可能性が高く、オープンソースプロジェクトとそのリポジトリ

元記事を表示

Webの勉強はじめてみた その24 〜テンプレートエンジン〜

N予備校の「プログラミング入門Webアプリ」を受講しています。
今回は第3章16節です。

テンプレートエンジン

:::note
テンプレートと文字列とプログラムを組み合わせることで、 静的なユーザーインタフェースのデータである HTML を動的に出力できるライブラリのこと
:::

静的なページに変数を入れてそれをベースにして動的なページにしようと言う認識。

PUGを使う

`Dockerfile`に記述

“`Dockerfile
RUN yarn add pug@2.0.4
RUN yarn global add pug-cli
“`

雛形となる`form.pug`

“`pug
doctype html
html(lang=”ja”)
head
meta(charset=”UTF-8″)
title アンケート
body
h1 どちらが食べたいですか?
form(method=”post” action=path)
span 名前:
input(type=”text”

元記事を表示

メモ:node.jsでブロックチェーンの基本を見る

node.jsでブロックチェーン周辺の基本を見ておくことにしたので、その記録。

[ここ](https://marsquai.com/745ca65e-e38b-4a8e-8d59-55421be50f7e/1f67fdab-8e00-4ae1-a1b9-077d5a30a5d6/c2b1e311-8654-41db-a4d1-4c419cae7830/)とか[ここ](https://note.com/strictlyes/n/n40e5884229a5)とか
を参考にした。

# 準備
とりあえずtypescriptを入れる。
`npm install typescript @types/node`

# ブロックチェーン
[予備知識](https://persol-tech-s.co.jp/corporate/security/article.html?id=69)

nodeで作成している記事に従ってブロックとチェーンのコードを書いてみる。
微妙に自分の趣向で書き換えてるけど、ほぼそのままパクリ。

ブロックは、前のブロックのハッシュ値+自分のデータでハッシュ値を作成するが、時

元記事を表示

無料クラウドサービスでJupyter Labを使ってみる ~最小構成導入編~

## カスタマイズ可能で最新バージョンのJupyterを使うには?

### この記事の目的

無料で利用可能なJupyterアプリケーションといえば[Google Colaboratory](https://colab.research.google.com/)や[Watson Studio](https://dataplatform.cloud.ibm.com/)といったものがメジャーでよく知られていると思います。

初めから一通りのミドルウェアなどがセットアップされており、サインアップするだけで特に何の準備も必要なく、手間もかからずすぐに始めることができる優れたサービスだと思います。

その代わり、新たに使いたいライブラリを追加したり、作成したデータをファイルとしてクラウドに保存しても、基本的には永続化することはできず、サインアウトすると消滅してしまうという不便もあります。

また、ベースは[Jupyter Notebook](https://jupyter-notebook.readthedocs.io/)であり、より進化した[Jupyter Lab](https://jupy

元記事を表示

Docker AmazonLinux2のコンテナにNode.jsを入れている部分の処理を紐解いてみた

# 概要

– 他の方が作ってくれたのLaravelアプリケーションローカル開発環境のAmazonLinux2コンテナにNode.jsを入れている部分の処理をまとめてみる

# Node.jsの入れている部分Dockerfile

– 下記のような処理をしている。

“`Dockerfile
RUN curl -fsSL https://rpm.nodesource.com/setup_14.x | bash –
RUN yum -y install nodejs && \
npm i -g n && \
n 14
“`

– 理解しやすくするため&&と\で一行に記載されている部分を冗長だがRUNになおしてみる。

“`Dockerfile
RUN curl -fsSL https://rpm.nodesource.com/setup_14.x | bash –
RUN yum -y install nodejs
RUN npm i -g n
RUN n 14
“`

元記事を表示

Node + TypeScript で MySQL に接続して Read, Write してみる

## 背景

node + TypeScript で MySQL に繋いで少しだけデータ操作をする場面があったのですが、あまり記事無くて苦戦したので備忘録として残しておきます。

## 実装方針

– O/Rマッパーのような大きいライブラリじゃなくても済む規模だったので [mysql](https://github.com/mysqljs/mysql) を使用して生クエリで対応
– コールバック地獄にならないようにしたい
– しっかりトランザクションはかけておきたい

## バージョン

– node: v14.17
– mysql(ライブラリ): 2.18.1
– MySQL(DB): 5.7

## 実装

### 接続

“`ts
import { createPool } from ‘mysql’;

(async () => {
const pool = createPool({
host: process.env.MYSQL_HOST,
user: process.env.MYSQL_USER,
password: process.env.MY

元記事を表示

pm2 deploy しようとしたが、「WARNING: UNPROTECTED PRIVATE KEY FILE!」でデプロイ出来なかった。

PM2デプロイコマンドを叩いたら、下記のようなエラーがでて、デプロイできなかった。
そうなった原因はわからない。数日前までは問題なくデプロイ出来ていたので…

“`terminal
$ pm2 deploy production
–> Deploying to production environment
–> on host ***********

○ deploying origin/master
○ executing pre-deploy-local
○ executing pre-deploy `git pull`
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for ‘/Users/***/.ssh/***.pem’ are

元記事を表示

Discord.jsでOauth2を使いweb認証を作る!

#初めに
Discord.jsでと書きましたが正確にはaxiosでです
仕組みとしては
Discord.js<=>MongoDB
サイト=>axios=>Discord-oauth=>mongoDB=>Discord.js=>Discord
的な感じです
Node.jsのみで書いたので少し汚いです

#必要なもの
Discord.jsv13(最新なので)
Node.jsv16(Discord.jsがv16以降でしか動かないので)
axios(POST&GETするために)
express(サイトを立てるために)
aurora-mongo(MONGOとの接続を楽にするために)

`npm i discord.js express axios aurora-mongo`

#コード
“`js
const {Client, Intents, MessageActionRow,
MessageButton} = require(‘discord.js’),
//分割代入する
client = new Client({intents: [Intents.FLAGS.GUILDS, I

元記事を表示

Amplify CLIを使って、ローカルで実行&AWSにデプロイ

Amplify CLIを使って、REST APIや静的コンテンツのサーバを立ち上げます。
ローカル環境で実行・デバッグして確認したのち、AWS上にデプロイ・実行します。

ローカル環境でのデバッグには、node.jsとVisual Studio Codeを使います。
AWS上には、API Gateway、Lambda、S3を使います。
上記の橋渡しに、Amplify CLIを使います。

今回使うのは、AmplifyではなくAmplify CLIです。
なぜこのような言い方をしているかというと、Amplifyは、いろいろ自動化してくれているのですが、何をしているかよくわからないので、長期的にメンテナンスがしづらく、バグに遭遇する可能性もあるためです。
なので、Amplify CLIを使って、API Gateway、Lambda、S3を一つ一つ作っていきます。

それと、Amplifyで構築すると、今までS3やAPI Gateway、Lambdaにばらばらで分散していたパーツ群がAmplifyに集約されるので、まとめてみやすくなります。

目指す形は以下の通りです。

![image.p

元記事を表示

[OCI]MongoDBクライアントからAutonomous JSON Databaseに接続してみた(Node.jsアプリケーション編)

#はじめに

これまでの以下の記事で、Oracle Database API for MongoDBを利用することによりMongoDB Shell、mongoexport/mongoimportなどのMongoDBクライアントからAutonomous JSON Databaseを操作できることを確認しました。

[[OCI]MongoDBクライアントからAutonomous JSON Databaseに接続してみた(MongoDB Shell編)](https://qiita.com/500InternalServerError/items/20f646bc38725dea580b)
[[OCI]MongoDBクライアントからAutonomous JSON Databaseに接続してみた(mongoexport/mongoimport編)](https://qiita.com/500InternalServerError/items/a03003e7979d62a4b019)

今回は、MongoDBの使用を前提に書かれているアプリケーションが、接続先をAutonomous JSON

元記事を表示

ws:WebSocketServerはBlobで受ける

「ws node.js」で検索して出てくるサンプルコードがどれも送信内容次第で失敗する。
テキストからBlobに変えたらうまく行った。根本的原因は不明だがとりあえず。

“`javascript:nodeApp.js
const WebSocketServer = require(“ws”).Server
const server = new WebSocketServer({ port: 5001 })
server.on(“connection”, client => {
client.on(‘message’, message => {
server.clients.forEach(v => {
if(v !== client) v.send(message)
})
})
console.log(‘_connections’,server._server._connections)
})
“`
“`javascript:plainWeb.js
$(e=>{
var m = new Messenger.Nodejs().message(e=>{
co

元記事を表示

GitHub Actions で apt/perl/node ツールのインストールを自動化する

# Summary

This is an article about GitHub action to automate apt/perl/node tool installation. Installed files are cached for later use. `use-apt-tools` and `use-perl-tools` are for apt/perl tools. `use-x-tools` is for both. `install-node-modules` is for node package installation and cache all `node_modules` under the specified directory. Read each repository’s README. Visit https://github.com/office-tecoli/.

# 必要なツールを簡単にインストールしたい

ある作業で GitHub Actions を使おうとしていて、その中で apt と perl と node のツー

元記事を表示

npm run dev が上手くできない時の対処法 〜 Error: error:0308010C:digital envelope routines::unsupported 〜

## はじめに
こちら自分用のメモであるためとても雑な記事です。
ただ、同じようなエラーが出た人の助けに少しでもなれば幸いです。
## エラーログ

![スクリーンショット 2022-01-21 22.50.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1081227/9e7dfc55-f58b-3151-d338-a03e89d2cbce.png)

“`.zsh
> 〇〇@1.0.0 dev
> webpack –watch

Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:67:19)
at Object.createHash (node:crypto:135:10)
“`

##原因
Nodeのバージョンが高すぎることが原因のようです

##解決策
Nodeのバージョンを下げる

###環境
macOS Montere

元記事を表示

OTHERカテゴリの最新記事