20191004のNode.jsに関する記事は4件です。

Cloud CDN 署名付き URL を作るプログラムの Node.js 向けサンプル

概要

https://cloud.google.com/cdn/docs/using-signed-urls?hl=ja の"署名付き URL をプログラムで作成する" のところに Node.js のサンプルプログラムがないので作ってみた。

準備

$ npm i -S urlsafe-base64
$ npm i -S crypto
$ npm i -S moment

サンプルプログラム

const URLSafeBase64 = require("urlsafe-base64")
const crypto = require("crypto")

function signUrl(url, expiration, keyName, key) {
  const decodedKey = URLSafeBase64.decode(key)

  const sep = url.indexOf("?") != -1 ? "&" : "?"
  const signingUrl = `${url}${sep}Expires=${expiration}&KeyName=${keyName}`
  const signature = crypto.createHmac("sha1", decodedKey).update(signingUrl).digest()

  const encoded = URLSafeBase64.encode(signature)
  return `${signingUrl}&Signature=${encoded}`
}

使い方例

引数 key は、この例のように BASE64 エンコードされたものです。これは Cloud DNS の URL 署名鍵で自動生成されたものを使うことができたり、自分で作ったものを使うことができます。しかし、その署名鍵は安全に保管してください。
誤ってGitHubの公開リポジトリーに公開するとか、Webで公開してしまうとかいったことがないようにしてください。

const moment = require("moment")
const url = signUrl("https://myhost/path/to/image.jpg", moment().add(1, "hours").unix(), "my-key", "YmFzZTY0ZW5jb2RlZAo=")
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Cloud CDN 署名付き URL を作るプログラムの Node.js 向けサンプル

概要

https://cloud.google.com/cdn/docs/using-signed-urls?hl=ja の"署名付き URL をプログラムで作成する" のところに Node.js のサンプルプログラムがないので作ってみた。

準備

$ npm i -S urlsafe-base64
$ npm i -S crypto
$ npm i -S moment

サンプルプログラム

const URLSafeBase64 = require("urlsafe-base64")
const crypto = require("crypto")

function signUrl(url, expiration, keyName, key) {
  const decodedKey = URLSafeBase64.decode(key)

  const sep = url.indexOf("?") != -1 ? "&" : "?"
  const signingUrl = `${url}${sep}Expires=${expiration}&KeyName=${keyName}`
  const signature = crypto.createHmac("sha1", decodedKey).update(signingUrl).digest()

  const encoded = URLSafeBase64.encode(signature)
  return `${signingUrl}&Signature=${encoded}`
}

使い方

const moment = require("moment")
const url = signUrl("https://myhost/path/to/image.jpg", moment().add(1, "hours").unix(), "my-key", "zPPWQcAfNkFdNU0jnY0n3g==")
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ts-node を使った TypeScript + node の環境構築

Node.js + TypeScript の環境構築手順の備忘録です。

最小構成(最小ではない)

npm run startmain/app.tsを動かす。

package.json
{
  "dependencies": {
    "ts-node": "^8.4.1",
    "typescript": "^3.6.3"
  },
  "scripts": {
    "start": "ts-node main/app.ts"
  }
}
tsconfig.json
{
  "compilerOptions": {
    "target": "es6",
    "outDir": ".dist",
    "sourceMap": true,
    "module": "commonjs",
    "strict": true,
    "moduleResolution": "node",
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "esModuleInterop": false,
    "experimentalDecorators": true,
    "forceConsistentCasingInFileNames": true
  }
}
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

yarnで困ったら

yarn installできなくなった

image (1).png
(画像でしかエラーログが残っていなかった)

「There appears to be trouble with your network connection.」

と言われています。

yarnもyarn install もできない。
(やっていること同じ)(最近知った)

ググろう

ググって、タイムアウトの時間を大きくするため従い次のコマンドを実行。

$ yarn install --network-timeout 1000000

参考Qiita: https://qiita.com/remin/items/06a3a0dab63531c531e4

。。変わらない。

「npm|yarnで怒られたエラー集まとめ」という素晴らしいQiitaを見つけたので下記を試したがダメ。。

1. killall node
2. ls (package.jsonが表示されていることを確認する。なければあるところまでcdで移動)
3. rm -r node_modules
4. rm package.lock.json (rm yarn.lock) package.lock.jsonかyarn.lockどちらか存在するほうを削除。
5. npm i or yarn i
6. ローカルサーバーを立たてる or あなたのやりたかったこと

参考Qiita: https://qiita.com/M-ISO/items/d693ac892549fc95c14c

(yarn installできない状態でyarn.lockむやみに消すもんじゃないですね)

色々やった末の

再起動

したら直りました。

リポジトリ多すぎて何個も立ち上げているので再起動億劫になっていましたが、ちゃんと次から序盤でやろう。

困ったら早い段階で一度再起動してみてください。

yarn使えなくなると誰しも焦ると思うので、誰かこの記事で1人でも助かったらいいな。笑

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む