- 1. Expressのテンプレートエンジンにejsを使う時、ejs内でexpressのlocalsを参照できる
- 2. fnm (Fast Node Manager) のインストール方法と使い方
- 3. Express.jsにPassport.jsで、任意のフォルダ配下のみをBasic認証する その2
- 4. メモ:node.jsのjestでユニットテスト
- 5. Symbolブロックチェーンで不正な署名要求を検知し、注意喚起のメッセージを送る方法
- 6. SORACOM LTE-M Button plusをトリガーに、LINE Notifyで位置情報を通知する
- 7. Googleさんの zx をローカルインストールして「nodeコマンドで実行」/「ファイルを直接指定して実行」
- 8. Express.jsにPassport.jsで、任意のフォルダ配下のみをBasic認証する
- 9. javascriptの変更をブラウザに即時反映して動作確認したい
- 10. ワイ「Node.jsってなんぞや?」
- 11. Expressで実装したREST APIのresponseスキーマはjest-openapiで期待通りか?テストできる
- 12. 【Sequelize】ハマったポイントのメモ
- 13. JavaScriptのClassでprivateメソッドを実装すると「Parsing error: Unexpected character ‘#’ eslint」エラーになる
- 14. Google Cloud Functions で Twitter の定期投稿Botを作成
- 15. Windowsでnode-gypが成功した話
- 16. 私がサクッと認証付きで Node.js からメールを送った話
- 17. そのオープンソースプロジェクト、公開前に大事な情報コミットしてない?
- 18. nvm-windowsでNode.jsをインストールする
- 19. Firebase CLIとかの出力が2022-01-10の一時期に乱れてた件
- 20. React Nativeのstart時にエラー
Expressのテンプレートエンジンにejsを使う時、ejs内でexpressのlocalsを参照できる
## はじめに
Expressでテンプレートエンジンejsを使った実装をする時に、ejs内ではExpressのlocalsを参照できるという事を知ったので、具体的にどうなるのか?を少しまとめてみた。## ejs内ではexpressのapp.localsやres.localsのlocalsを参照できる
[res.render(view [, locals] [, callback])](https://expressjs.com/en/4x/api.html#res.render)には、> locals, an object whose properties define local variables for the view(ビューのローカル変数を定義するプロパティを持つオブジェクト).
と書かれているので、あくまでres.render()の第二引数に渡す値のみがテンプレートエンジン内(ejs)で使えるのかと思っていたが、実際にはejs内では`locals`というオブジェクトに、res.render()の第二引数のオブジェクトと、expressのlocals(app.loc
fnm (Fast Node Manager) のインストール方法と使い方
これまで Windows で Node.js のバージョン管理は Nodist を利用していましたが、2019年3月30日のリリース以降更新されていません…:sleeping:
https://github.com/nullivex/nodist
そんな理由から別のバージョン管理ツールに乗り換えをすすめる記事をちらほら見かけるようになりました。
乗り換えなければと思いつつ、
* Node.js が利用できなくなると仕事にならない
* 種類が多くてどれを選んだらいいのかわからない
* インストールが大変そうという理由からずっとスルーしていました…
しかし、以下記事と出会い、 fnm (Fast Node Manager) に乗り換えることにしました!
https://qiita.com/heppokofrontend/items/5c4cc738c5239f4afe02?0
fnm の詳細は以下をご覧ください。
https://github.com/Schniz/fnm
というわけで、 fnm のインストール方法を紹介します。
ちなみに Nodist は以下の手順
Express.jsにPassport.jsで、任意のフォルダ配下のみをBasic認証する その2
## 概要
expressを使って特定フォルダのみパスワードを掛けたい。こんどこそ、express-basic-authを使って。
“`JavaScript
const express = require(“express”);
const basicAuth = require(“express-basic-auth”);
const PORT = 3000;
const app = express();
//
app.use(“/admin”, basicAuth({
users: { ‘user’: ‘pass’ },
challenge: true,
}), express.static(“public/admin”));
//
app.use(“/”, express.static(“public/”) );
app.listen(PORT, () => {
console.log(“app listening on port ” + PORT + ” ” + new Date());
});“`
## 結論
やったー。動いた!ばんざーい。
メモ:node.jsのjestでユニットテスト
[pythonのユニットテストpytest](https://qiita.com/DiveMasakazu/items/b242e92ab4aca99c6877)は軽く見たので、node.jsも見ておく。
現時点だとjestというのが一番良さそう。
[公式日本語版}(https://jestjs.io/ja/docs/getting-started)ぽいのや
[ここ](https://qiita.com/rnasahiro/items/2d6584a915745218442e)、[ここ](https://webbibouroku.com/Blog/Article/typescript-jest)
を確認しながら。#インストール
単体だと`npm install jest`だが
`npm install typescript jest @types/jest ts-jest`で入れた。
実際の開発現場だと`–save-dev`してるのかも
27.4.5で入った。`jest -init`コマンドを流すのだが
“`
C:\nodejs\jest>.\node_modules\.
Symbolブロックチェーンで不正な署名要求を検知し、注意喚起のメッセージを送る方法
現在Symbolブロックチェーン上で、全額振り込みのトランザクションに署名させる詐欺が確認されています。今回はそういった詐欺行為を検知し、注意喚起のメッセージをトランザクションに載せて自動で送信する方法を紹介します。
いつもはBrowser上のJavascriptで紹介していますが、今回は常駐させる必要があるのでNodeJS上で動かします。もちろんブラウザ上で起動させて、イベント期間中だけ入金したアカウントにチケットを配布させるローコードでデプロイレスなスマートコントラクトとして利用するなども可能です。ソースコードについては以下の記事を参考にさせていただきました。
https://qiita.com/VistielArch/items/9d9046d4a21f22debd8e
“`js
const sym = require(“symbol-sdk”);
const nodeURL = ‘https://node.xembook.net’;//詐欺アカウント
const scamAddress = sym.Address.createFromRawAddress(‘
SORACOM LTE-M Button plusをトリガーに、LINE Notifyで位置情報を通知する
#はじめに
SORACOM LTE-M Button powered by AWSを以前使っていたのですが、紛失。
しかし最近このLTE-Mボタンを使う機会ができたので、これを機にLTE-M Button Plusを買いました。https://soracom.jp/store/5207/
そしてこのLTE-M ボタン Plusを使い、AWS lambda、そしてIFTTTを介してLINE Notifyの通知を使う事を実現してみました。
IFTTTのLINE Notifyの設定でgoogle staticmaps apiを叩くようにし、座標情報はLTE-Mボタンから取得。
これでボタンを押すとNotifyが届くと共に大まかな現在地のマップの静止画も表示されるようになりましたこれで富士スピードウェイのどのあたりで連絡してきたか分かるはず? pic.twitter.com/UNlwXDll86
— norippy@車とIoTを楽しむおじさん (@Norio_Delux) January 12, 2022
調べてわかったのですが、このボタンはPowered by AWSのモデルと違いボタンを押した位置座標を大まかではあるものの取得できる機能があります。そこで、今回はtwitterの動画にあるように、LINE Notifyに文章を送るだけでなく、今の位置情報をGoogle maps APIの中のStatick map APIを使って一緒に今の位置情報を画像で送ってみました。
この記事ではこの実現方法をまとめます。
#開
Googleさんの zx をローカルインストールして「nodeコマンドで実行」/「ファイルを直接指定して実行」
この記事の内容は、昨年末のアドベントカレンダー用の記事でも扱った、[Googleさんの zx](https://github.com/google/zx) に関するものです。
●【Backlog 2021】 Googleさんの zx で Backlog API を扱う(JavaScript で課題を追加する) – Qiita
https://qiita.com/youtoy/items/36ea84e09332d4e6815a## 何をやるか
今回の記事で扱う内容は、以下のとおりです。– `npm i zx` で zx をローカルにインストールして使う
– `node ●●.mjs` というような nodeコマンドを使った処理の実行
– `./●●.mjs` というようなファイルを直接実行する形での処理## 下準備
冒頭の記事でも書いている、今回のセットアップの話をざっくり書きます。
なお、自分が試している環境は Mac で、Node.js のバージョンは 14.18.2 です。Node.js のバージョンについては、公式ページに以下の指定がありますので、その点だけ
Express.jsにPassport.jsで、任意のフォルダ配下のみをBasic認証する
## 概要
expressを使って特定フォルダのみパスワードを掛けたい。参考サイト、、、っていうかほぼ以下のページからゴニョゴニョした。
ありがとうございます。
Express.jsにPassport.jsで、任意のフォルダ配下のみをBasic認証する
https://qiita.com/hoshimado/items/272fba1aeb728e14f278“`JavaScript
const express = require(“express”);
const PORT = 3000;
const app = express();
//
const passport = require(“passport”);
const passportHttp = require(“passport-http”);
passport.use(new passportHttp.BasicStrategy(
function (username, password, done) {
if(username==”user” && password==”pass”){
javascriptの変更をブラウザに即時反映して動作確認したい
# javascriptの変更をブラウザに即時反映して動作確認したい
lite-serverを利用する。
jsやtypescriptを利用して開発をしている場合に、スクリプトの反映をわざわざブラウザの再読み込みを押さなくとも開いているブラウザを自動でリロードしてくれるツール。
# 利用できる環境構成
html & javascript & css で構成されているサーバーロジックに依存しないシステムや開発フェーズにおいて効果を発揮する。
# セットアップにいいサイト
https://enjoy-a-lot.com/typescript-init/#toc4
# 利用する際にいいサイト
# わからないこと
– どんな仕組みで動いているか
– Webサーバーを持つような場合に利用シーンがあるのか、ないのか判断できてない(基本はなさそうな気がする)
ワイ「Node.jsってなんぞや?」
#ワイ「JavaScriptを触りたいンゴ」
ワイ「せっかくJavaScriptとTypeScriptについて知ったから触ってみたいで」
PC「JavaScriptはブラウザ上で動く言語やで^^」
ワイ「なんやこいつ」
ワイ「C++とかPythonとかとは仕様が違うんか」
PC「せや」
PC「だからファイルの読み書きが出来なかったり、通信が出来なかったりするんやで^^」
ワイ「なんやこいつ」
![js-ts.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/379533/df4cc731-f64f-17ab-1270-90e15ab6ab65.jpeg)#ワイ「どうするのが正解なんや?」
ワイ「まあ誰かがいい感じの作ってくれてるやろ(未来予知)」
PC「`Node.js`を使えばいいんやで」
ワイ「ほらな」
ワイ「なんやそいつは」
Nodeくん「説明しよう!!」
ワイ「なんやこいつは」
Nodeくん「`Node.js`は一言で言うと、JavaScriptの`実行環境`だよ」
Nodeくん「ローカルで実
Expressで実装したREST APIのresponseスキーマはjest-openapiで期待通りか?テストできる
## 以下の記事を参照して頂ければと思います
https://note.com/shift_tech/n/n3725f8a55b8d**※Qiitaの記事は全て個人的な記載であり、所属する組織団体とは無関係です**
【Sequelize】ハマったポイントのメモ
Sequelizeを少し使ってみて、いろいろハマったところがあったので、そのメモ。
version: “Sequelize CLI [Node: 16.13.1, CLI: 6.3.0, ORM: 6.12.0-beta.1]“# migrationでファイルを指定してundoするときの注意点
“db:migrate:undo:all“に“–to“オプションを付けてファイル名を指定すると、「そのファイルまで」undoされる。
例えば、migrationパス配下にA、B、Cの3ファイルがあって、A→B→Cの順に作成していたと仮定して、“–to A“と指定すると、AだけでなくBもCもundoされる点に注意。
決して「そのファイルの分だけをundoする」という意味ではない。
※基本的には[ここ](https://sequelize.org/master/manual/migrations.html#undoing-migrations)に載ってる# sequelizeオブジェクトのつくりかた
“sequelize.query“とかを使うために“seq
JavaScriptのClassでprivateメソッドを実装すると「Parsing error: Unexpected character ‘#’ eslint」エラーになる
## はじめに
ESLintを設定している時に、以下の図のようなエラーが発生した。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1372684/7f45977c-39c1-9484-2659-c54ecba53200.png)今回はこのエラーを解消する方法について調べてみたのでその備忘録を残す。
## ESLintについて
https://qiita.com/yuta-katayama-23/items/5d73bbe79c19301551df#eslint%E3%81%AE%E8%A8%AD%E5%AE%9Aを参照。
## ESLintのparserOptionsを指定する
JavaScriptsのprivateメソッドはes2022の機能なため、以下のようにESLintの設定を変える必要がある。“`json
// .eslint.json
{
…
“parserOptions”: {
“ecmaVersion”: 13
},
…
}
“`
Google Cloud Functions で Twitter の定期投稿Botを作成
#はじめに
Twitterに定期的に投稿するBotを作ってみたのでその記録。
Twitter APIはGoogle Cloud Functions 上でnode.jsで実装。
スケジューリングは Google Cloud Schedulerを利用した。
Cloud Schedulerからは直接Cloud Functions を起動できないので、間にGoogle Cloud Pub/Sub を挟んでいる。####ポイント
– Firebaseは利用しない(Firebaseが必須というような記事も見受けられるが誤解)
– TypeScriptも利用しない(Cloud Functionsが未対応なので使用しない)#Twitter APIの準備
TwitterのAPIを利用するにはAPIのキーが必要だがこれはTwitter Developer Potalで取得する。
この辺りは、こちらあたりの記事が参考になるかと思う。
参考 [Twitter API を利用するには](https://qiita.com/taishi0202/items/092c267c0c6dc68347c5)注
Windowsでnode-gypが成功した話
## エラーが出る人は下準備をしていない?!
エラーが出るのはnode-gypの基準に満たしてないかも!
[node-gyp公式サイト](https://github.com/nodejs/node-gyp#on-windows)に詳しい情報が載ってるので英語が得意な人は読んでみてください。## 下準備
以下のことを順番通りにしてみてください!## Pythonのインストール
まず、Pythonをインストールしてください。
[Microsoft StoreのPython](https://docs.python.org/3/using/windows.html#the-microsoft-store-package)をおすすめします。## Visual Studio Build Toolsのインストール
Pythonの次に、[Visual Studio Build Tools](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=BuildTools)が必要です。
私がサクッと認証付きで Node.js からメールを送った話
## 認証付きで Node.js からメールを送るのは初心者には難しい?
人によって難易度は違うように感じますが、これはそこそこ難しいと思います。
どうしても、エラー文が分かりにくく解決策も簡単に見せてはくれません。
なので、挑戦するときは **挑戦して成功した人** と一緒に挑戦するといいでしょう。## 必須条件
– Node.js が扱える・動かせる
– メール・Node.js についての知識がそこそこある
– サーバーとドメインがある
– サーバーで、すでに Node.js 製の何か(Web サーバー等)があり、ドメインの設定等が済んでいる## Zoho 契約
### 無料で使える Zoho メールサービスに契約
[Zoho 公式サイト](https://mail.zoho.com/)にアクセスして、契約してください。
契約はサイトの通りにしてください。### Zoho メールサービスのセッティング
このサービスのセットアップウィザードは、非常に分かりやすいのでここに記載する必要はないでしょう。
### おっと!
Zoho のメールサービスの
そのオープンソースプロジェクト、公開前に大事な情報コミットしてない?
通常、秘密鍵やAPI Tokenはソースコードとは分離させ、.envファイルなどに保存しておいて、Gitのコミットには含めない。しかし、実装の初期には.envを一時的にコミットに含めている事例も珍しくない。それを後で削除してコミットしても、履歴としては残っている。
この記事では、スマートコントラクト用の秘密鍵や、APIトークンなどの情報をGitのコミット履歴から検索し、リポジトリを公開する前に安全を確認できるツールを紹介する。
##コミット履歴を展開する
私の作ったesightというツールを使う。https://github.com/TakutoYoshikai/elemental-sight
git logを使って確認するのが一般的だが、一度全て展開した方が、後の編集や確認が楽になる。
**インストール**
“`bash
pip3 install git+https://github.com/TakutoYoshikai/elemental-sight.git
“`**コミット履歴の展開**
出力先ディレクトリに、全てのコミットの差分ファイルが展開される
nvm-windowsでNode.jsをインストールする
## nvm-windowsとは
Node.jsのバージョンを管理するアプリケーション。
複数のバージョンをインストールして、好きなタイミングで使用するバージョンを切り替えたりできる。## nvm-windowsをインストールする
[Gitリポジトリ](https://github.com/coreybutler/nvm-windows/releases)から`nvm-setup.zip`をダウンロードし、`nvm-setup.exe`を実行する。:::note warn
聞かれる質問は基本的に全てデフォルトで問題ないが、インストール先のフォルダのパスの半角スペースが含まれる場合、コマンド実行時に動作しない可能性がある。
:::## mvnのバージョンを確認する
インストールできたら下記のコマンドでバージョンを確認できる。“`
❯ nvm version
1.1.9
“`## インストール済みのNode.jsを確認する
現段階ではまだ何もインストールしていないため、`No installations recognized.`が出力される。“`
❯ nvm
Firebase CLIとかの出力が2022-01-10の一時期に乱れてた件
※Firebase CLI については更新されたので `npm update` すればもう大丈夫です
※npm 側で対応して該当バージョンが削除されました。よって我々側の作業不要です。
## どうした
`firebase-tools` とかの出力がおかしい。
Firebase CLIがこわれた…… pic.twitter.com/APtT9v3hEO
— 高梨ギンペイ (@ginpei_jp) January 9, 2022
## どうして
依存の依存の(中略)依存である `colors` に変なリリースがあった。作者故意のものなのでそこの更新は期待できなさそう。
– `v1.4.2`, `v1.4.1` ← 問題あり
– `v1.4.0` ← 大丈夫https://www.npmjs.com/package/colors
## どうする
※既に npm 側で対応されたので、現在は作業不要です。
### 直接利用している場合
過去のバージョンで固定すれば大丈夫。
“`console
$ npm install colors@1.4.0
“`### 依存の依存の場合
基本的には対象パッケージの更新待ちです
React Nativeのstart時にエラー
npx react-native start
コマンド実行時に下記のようなエラーが出た。failed to construct transformer envelope routines::unsupported
digital envelope routines::initialization error
そのため、npx react-native run-androidを実行すると、Androidの仮想デバイスも赤いエラー画面が出力。
調べたところ、どうやらnode.jsのバージョンがいけないらしい。
自分が使っていたのは最新バージョンの17.3.0
v17でこのエラーが発生するようなので、安定バージョンの16.13.1にダウングレードすることで解決しました。ちなみにnode.jsのダウングレードはWindowsだとコントロールパネルからnodejsをアンインストールして、
node.js公式から16.13.1をダウンロードして、インストーラを走らせるだけ。