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

Node.js関連のことを調べてみた2020年08月04日
目次

Node.jsでtmpに一時ディレクトリを作るにはfs.mkdtempSyncを使う

Node.jsで/tmpに一時的なディレクトリを作るには、[fs.mkdtempSync]を使います。

[fs.mkdtempSync]: https://nodejs.org/api/fs.html#fs_fs_mkdtempsync_prefix_options

“`javascript
const fs = require(‘fs’)

const dir = fs.mkdtempSync(‘/tmp/foo’)

console.log(dir)
//=> “/tmp/foo4xeXpJ”
“`

元記事を表示

GitHub APIのレスポンスが 403 Forbidden になったら

`User-Agent`ヘッダーは設定していますか??
https://docs.github.com/en/rest/overview/resources-in-the-rest-api#user-agent-required

### コード例

以下はissueを作成するコードです。
認証はパーソナルアクセストークンで行います。

`PersonalAccessToken`, `organization`, `repository`はご自身のものに置き換えてください。

“`github.ts
import https from ‘https’

const createIssue = async (title: string, body: string, labels: string[]): Promise => {
return new Promise((resolve, reject) => {
const req = https.request({
method: ‘POST’,
headers: {

元記事を表示

Twitter で 自動フォロワー獲得ツール を作った話 ②

# まえがき
本記事は、[Twitter で 自動フォロワー獲得ツール を作った話](https://note.com/masanaosuzuki/n/n48fd7289537e) の続編です。
前編をご覧になっていない方は、まずは上記のリンクへどうぞ。
また、本記事に記載されている全体のソースコードは、[Github](https://github.com/masagao/twitter_automation) からご覧いただけます。

# あらすじ
Twitter のフォロワーを増やすための法則を確立したものの、
「GAOGAO エンジニアたるもの、プログラミングで実装してみてはどうか」
との [@tejitak](https://twitter.com/tejitak) のお言葉を受け、Node.js で自動化を試みるのでした。
当時は開発経験がまるでなかったため、初のアプリケーション作成になりました。

# おさらい
今回の実装内容
「**どんなコンテンツでも、あるフォーマットに沿ってツイートすれば、ほぼ確実にライクとフォローが期待できる法則**」
>① **毎日定時に決まった

元記事を表示

Twilioを使って、ブラウザで電話を受け取れるようにする

# やること

[Twilio](https://www.twilio.com/ja/)のライブラリを利用して、電話の着信機能を作成します。
Twilioへの登録と、電話番号の取得が必要です。
以下がTwilio側とブラウザ側の処理の流れです。

## :telephone_receiver:Twilio側の流れ

1. Twilioが通話を受け取る
2. Twilioが自動応答のシナリオ(TwiML)を返すAPIを呼び出す
3. TwilioがTwiMLを読み取って、クライアント(ブラウザの着信者)を呼び出す

## :desktop:ブラウザ側の流れ

1. twilio-clientライブラリを使って、着信時の挙動を設定する
2. クライアントのトークンを作成するAPIを呼び出す
3. トークンを使って、着信を受け取れるようにする

# APIのコードをかく:muscle:
node.jsで書きます。前もってtwilioパッケージをインストールしときましょう
`npm i twilio`

## TwiMLを返すAPIを用意する
expressを使っています。ざっくり書きます。

元記事を表示

Node.jsよりODBCでOracle, Salesforceなどに1ドライバで接続

Connect to Oracle, Salesforce and others using ODBC drivers from Node.js

#はじめに

Node.jsアプリケーションからODBCでSQL Server、Oracle、DB2、Postgres、MongoDBなどのDBや、Salesforce、Eloqua、Oracle Sales Cloud、Oracle Service CloudなどのSaaSアプリケーションに接続する必要性があるならば、DataDirect ODBCドライバを利用すると楽勝です。

この記事では、DataDirect ODBC ドライバを使用して Node.js から Oracle データベースに接続してみます。

#事前準備
Node.js

#DataDirect Oracle ODBC ドライバのダウンロード&インストール

1,ここからOracleデータベース用の64ビッ

元記事を表示

Bitbucketからコンテナサービスにアプリをデプロイする方法

今回のチュートリアルでは、**Bitbucket**から**Alibaba Cloud**の**コンテナサービス**にアプリケーションをデプロイし、Let’s Encrypt SSL/TLS 2019でセキュリティを確保します。

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

#Docker
Dockerは、コンテナを使ってアプリケーションを作成、デプロイ、実行するために設計されたオープンソース・ソフトウェアです。コンテナを利用することで、開発者はアプリケーションに必要なライブラリやその他の依存関係などをすべてパッケージ化し、1つのパッケージとして出荷することができます。そうすることで、コンテナのおかげで、開発者は、コードを書いたりテストしたり

元記事を表示

node.jsでsleep処理をasync awaitを使って書く

sleep処理を書くときはsetTimeoutを使うのが一般的だと思いますが、callbackを書きたくないので今風にasync awaitで書きます。

配列にある会社idの情報を1秒ごとに順番にリクエストする処理を書くと以下のようになります。

“`JavaScript:index.js
async function sleep(ms) {
return new Promise(r => setTimeout(r, ms));
}

async function request(id) {
// 割愛
}

async function exec() {
const companyIdList = [1, 2, 3, 4, 5];

for (const id of companyIdList) {
await sleep(1000);
await request(id);
}
}

exec();
“`

元記事を表示

AWS Lambda(Node.js)においてmiddyを使ってAmazon RDSに接続する方法

AWS Lambda(Node.js)において、[middy](https://middy.js.org/)を使ってAmazon RDSに接続する方法を紹介します。

## はじめに

### データベースエンジン

この記事ではデータベースエンジンとしてAurora MySQLを使用している場合の例を示しますが、他のデータベースエンジンの場合も基本的な実装は変わりません。

### プログラミング言語

この記事ではソースコードをTypeScriptで書いているので型定義をインストールしたり型アノテーションを記述したりしていますが、JavaScriptで書く場合は不要です。

### ミドルウェア

middyでRDSに接続するために、[@middy/db-manager](https://www.npmjs.com/package/@middy/db-manager)を使います。
@middy/db-managerでは、データベースクライアントとして[Knex.js](http://knexjs.org/)が使われます。

## 接続情報をAWS Secrets Managerで管

元記事を表示

AWS Amplify での Cognito アクセスは React Context.Provider を使って認証処理を Hooks 化しよう

![Amplify × React Hooks.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/163591/933eeb20-489f-ce8c-d6e6-3214050a49ff.png)

AWS Cognito は認証・認可を提供している AWS のサービスです。Amplify と統合することで、超高速に構築できます。Cognito を使用することで、API Gateway や S3 など他の AWS サービスとの統合がより簡単にできるようになります。

本記事では、Cognito を使用した React アプリケーションの実装例を紹介します。Cognito へのアクセスには [amplify-js](https://github.com/aws-amplify/amplify-js) というライブラリを使用します。さらに React の Context.Provider という機能を使うことで認証に関連する処理をカスタムフックに集約する方法を考察します。

本記事で実装されたアプリケーションは以

元記事を表示

[JavaScript] セミコロンをつければ絶対安心できるのか?;

## はじめに

[こちらの記事](https://qiita.com/riku-shiru/items/dce12248947f7f33aecc) を読んで、改めてJavaScriotの `;` について気になったので調べてみました。

## 結論

私が思ったより安心じゃなかった。

セミコロンありのスタイルでも、下記のように予期せぬセミコロンの挿入が起こってしまうパターンがあります。

“`javascript
function f() {
return
{
foo: ‘foo’
};
}

f(); // undefined
“`

セミコロンに関することは参考にさせていただいた[セミコロンに関する ESLint ルール](https://qiita.com/mysticatea/items/9da94240f29ea516ae87)という記事に全部書いてありました :pray::pray::pray:

以下の内容はリンク先の記事に(個人的な感想以外)書いてあることなので、ぜひそちらを参考にしてください!

#

元記事を表示

文章から単語を取り出して数えるサービスを作成してみた

# 概要

「単語を数えるプログラミング」をテーマにお勉強してみました。
単語を数えるということで形態素解析を用いて文章から単語を取り出して単語数を数えてみるサービスを作ることにしました。

お勉強した結果ですが以下のサービスとして公開しておりますので、以下の [作ったモノ] (https://qiita.com/tamoco/items/79746d0fd7b9d149f432#%E4%BD%9C%E3%81%A3%E3%81%9F%E3%83%A2%E3%83%8E) からご確認いただければ幸いです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/412322/b9a754b8-e366-3434-835d-7093b66e63c0.png)

# 使用しているフレームワークとライブラリ

今回は`Glitch`という`Node.js`のアプリを公開するためのサービスを使用して公開しています。

## Glitch
https://glitch.com/

フレームワークとライブラ

元記事を表示

Raspberry Pi4 地デジサーバ Chinachu+mirakurun の Node.jsをアップデートしてみた

Raspberry Pi4で地デジサーバを Chinachu +mirakurun で稼働していますが、以下のようにmirakurunをv3.2.0にアップデートした後、chinachuもアップデートしたところ、動かなくなりました。

“`
$ sudo npm install mirakurun -g –unsafe-perm –production //mirakurunのアップデート

$ cd chinachu
$ ./chinachu updater //chinachuのアップデート
“`
アップデート後、ステータス($ sudo pm2 status)を確認したところ、erroredと表示されました。

#なぜ動かなくなったか
原因は、Node.js をアップデートする前に、mirakurun をアップデートしたためでした。
それで、Node.jsをv8.9.4からv10.16.3にアップデートしました。

#正しいアップデートの方法
##1.Chinachuのユーザー追加
まず、Chunachu は Raspberry Pi のデフォルトユーザーでは動かない

元記事を表示

Obnizで動体検知センサー(HC-SR505)を利用して、動体検知したらスマホに通知。

# 「動体検知したらスマホに通知」をやりたい

こんなことをやってみよう。

使うのはこちら。

<ハードウェア>

– HC-SR505(赤外線人感センサー):https://obniz.io/ja/sdk/parts/HC-SR505/README.md
– Obniz:https://obniz.io/ja/products/obnizboard/
– Raspberry Pi Zero W:https://www.switch-science.com/catalog/3200/

<ソフトウェア>

– Node.js
– IFTTT

## HC-SR505

Obnizに、HC-SR505を直刺しします。

SQL文で変数を使う方法 in JavaScript

# はじめに
Node.jsでExpress+Mysqlを用いてRestApiを作成する際、postでの処理に詰まったため備忘録として記事を書きます。

# 問題

|id(int)|name(String)|
|—|—|
|1|test|

このようなテーブルに対して、以下のソースを用いてpostでレコードを挿入する際、数値は入るが文字列はエラーが出て入れることができなかった。

“`sample.js

id=req.body.id;
name=req.body.name”;

//jsonで{id:2,name:”sample”}というデータを送信

sql=”INSERT INTO api_tbl VALUES(“+id+”,”+name+”)”;
connection.query( sql,function (error, results, fields) {
if (error) throw error;
res.send(“ok”);
});
“`
原因としては、postリクエストを送った際、sql文をセットしている変数`sql`に以下のような

元記事を表示

windows で npm i に失敗する

# やりたいこと

`npm i`

# エラー

“`
npm ERR! cb.apply is not a function

npm ERR! A complete log of this run can be found in:
“`

# 解決法

nodejs のインストールに nodist を使っていたが、node を直接インストールして実行するように変更すると動くようになった。

## 実行したコマンド

“`powershell
# nodist のアンインストール
> choco uninstall nodist
# node を直接インストール
> choco install -y nodejs.install

# shell を開きなおす
> node -v
v14.7.0
> npm -v
6.14.7
> npm i -g npm
+ npm@6.14.7
added 434 packages from 880 contributors in 6.276s
>
“`

元記事を表示

TwitterAPIをServerlessを使ってLambda + Nodejsで動作させてみた

# 概要
TwitterApiを使ってあれこれしたいと思ったので動かすまでの手順をまとめてみた
Nodejsで作成した理由はなんとなくフロントエンドと同じjavascriptでやれたら楽かなーと思ったぐらいです。

# 基本セットアップ
ServerlessやNodejsなどのインストールは以前私が書いた記事ですが、こちらが参考になるかと思います。
https://qiita.com/tama0571046/items/cfe262b002f6434b915e

TwitterAPIを使用するまでの流れは記事がたくさんありますので、調べるとすぐに出てくるかと思います。

私が参考にしたサイト

2020年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説

# Serverless
### ServerlessをAWSの連携
まずはAWSにログインして[IAM]の[ユーザー]からアクセスキーとシークレットキーを取得してきてserverlessに教えます

“`zsh
sls config credentials –p

元記事を表示

Could not find node.js. This will result in editors missing key features.となった時の対応方法

# 事象1 : Eclipseを使っていたらMissing node.jsってダイアログが出た
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/834ceb23-bae4-3602-9c97-657755775fd1.png)

## 原因 : Node.jsがインストールするされていないから
最近はEclipse使うのにNode.jsが必要なのか・・・

“`text:エラーメッセージ
Could not find node.js. This will result in editors missing key features. Please make sure node.js is installed and that your PATH environment variable contains the location to the ‘node’ executable.
(ざっくり訳)
Node.jsが見つかりませんでした。これにより、エディタに主要な機能がなくな

元記事を表示

ローカルで開発中のnuxtプロジェクトをdockerコンテナ(別フォルダ)でnuxt startで公開する方法

## ローカルのnuxt開発環境をサクッとdockerで公開したい

全然サクッと公開できなかった・・・

開発環境で色々作っているnuxtのプロジェクト、普段はyarn devやnpm run devで開発・確認をしていますが、お客サンからの一言「どっかサーバーに上げて見れるようにしてくれない?」と。

ここで考えられる対応方法はいくつかあります。

・ビルドしてdist/ フォルダをS3やgithub経由でnetlifyとかにアップする。
 簡単。S3やgithub,netlifyの設定が必要。
 変更のたびにビルド→再アップが必要。

・開発サーバーを放置していいなら、直接 yarn serve(nuxt start)する
 一番簡単、ただしnuxt startをデーモンとして動かないので、サービス化するのに一手間必要。

・dockerコンテナをawsのec2上などに展開する。
 サービス化できるので放置できる。gitと連携しておけば、ファイル更新があってもpullしてコンテナ内で再ビルドできる。

楽なのは、ビルド済みのファイルをS3やnetlifyなどの静的ファイル公開サー

元記事を表示

nodenvでディレクトリごとにバージョンを指定する方法

今回はnodenvのセットアップ方法について簡単に紹介します。
先日、nodebrewのセットアップ方法について紹介したのですが、プロジェクト毎にnode.jsのバージョンを指定したかったのでnodenvに乗り換えました。
#はじめに
まず、node.jsのバージョン管理でnodebrewを使用していた場合にはnodebrewを削除する必要があります。
実際の手順を紹介します

##使用しているnode.jsのバージョンを控える
その前に現在使用しているnode.jsのバージョンを控えておきましょう。
以下のコマンドの実行結果を控えます。
`$ nodebrew list`

##nodebrewを削除
`$ brew uninstall nodebrew`

##設定ファイルの記述を削除

最後に利用しているシェルの設定ファイルから以下を削除します。
`export PATH=$HOME/.nodebrew/current/bin:$PATH`

この際、MacOSのバージョンによって設定ファイルが異なりますので注意しましょう。
###Catalina以前の場合

`vi ~/.b

元記事を表示

node.jsの標準のhttpsモジュールでAPIへのリクエストを実行する

## やりたいこと
node.jsの標準のhttpsモジュールでAPIへのリクエストを実行したい。
node.jsでHTTPリクエストを行う際には、[requestモジュール](https://github.com/request/request)が使われるケースが多かったようだが、[2020/2/11でdeprecated](https://github.com/request/request#deprecated)になったようなので、代わりにnode.jsの標準モジュールで実行したい。

## 実装

以下のような実装でリクエストを実行できた。
APIは、[zipcloud 郵便番号API](http://zipcloud.ibsnet.co.jp/doc/api)を試しに叩いている。

“`js
const https = require(‘https’); // 1: 標準のhttpsモジュールを使用

https.get(‘https://zipcloud.ibsnet.co.jp/api/search?zipcode=1000000’, (res) => {
if

元記事を表示

OTHERカテゴリの最新記事