20211124のNode.jsに関する記事は3件です。

[初心者向け]AWSを使って外部サイトからkintoneにレコードを追加

やりたいこと 外部サイトで入力したデータをマスタ(kintone)に登録 動作確認環境 作業端末:windows10 マスタデータ:kintone テストの流れ kintoneアプリ作成 AWS Lambda関数の作成 AWS Lambda環境構築 AWS API Gateway環境構築 外部ページの作成 1.kintoneアプリ作成 1-1.テスト用のアプリを作成 ○アプリ名:テストアプリ ○項目1:レコード番号 ○項目2:文字列(1行)   ➤フィールド名:テキスト   ➤フィールドコード:text  1-2.APIトークンの生成 アプリの設定>設定>APIトークンからレコード閲覧アクセス権有りのAPIトークンを生成し保存(APIトークンを控える) 2.AWS Lambda関数の作成 ※node.jsのインストールはこちらを参考にしました。 2-1.作業フォルダ作成 コマンドプロンプトからnpmを実行し作業フォルダを作成 $mkdir <作業フォルダを作成> (例:c:\temp\kintone_postなど) $cd <作業フォルダのパスを指定> $npm init --yes $npm config set strict-ssl false $npm install express ejs request $npm install axios --save ※「npm config set strict-ssl false」は証明書エラー回避のため 2-2.index.jsを編集 2-1で作成した作業フォルダにindex.jsを作成し編集 index.js var aws = require('aws-sdk'); const axios = require('axios'); var request = require('request'); /* kintone用のパラメータ(変更が必要) */ var DOMAIN = '<サブドメイン名>.cybozu.com'; //kintone環境のドメイン var APP_ID = <kintoneアプリのID>; //アプリID /* 変更は不要 */ var BASE_URL = "https://" + DOMAIN + '/k/v1/'; var headers = {'X-Cybozu-API-Token': '<kintoneのAPIトークン>'}; exports.handler = function(event, context, callback) { /* リクエスト本文取得 */ const body = JSON.parse(JSON.stringify(event.body)); var body_postrecords = { app: APP_ID, record:{ text:{value:body.text} } } } //レコードの作成 var options_postrecords = { url: BASE_URL + 'record.json', method: 'POST', headers: headers, 'Content-Type': 'application/json', data: body_postrecords } //レコードを送信 axios.request(options_postrecords).then((res) => { callback(null, res.data["id"]); }).catch((err) => { console.log(err); }); }; 2-3.ZIPファイルに圧縮 $zip -r kintonepost.zip index.js node_modules/ 3.AWS Lambda環境構築 3-1.関数の作成 関数名のみ入力し、後はデフォルトのまま関数を作成 3-2.ZIPファイルをアップロード 3-3.関数の動作確認 テストを実行し、エラーのレスポンスがないことを確認 エラーが出た場合は、index.jsの内容やLambda関数の設定のタイムアウト値などを見直してみる… 4.AWS API Gateway環境構築 4-1.APIの作成① APIを作成からREST APIの構築を選択 4-2.APIの作成➁ API名を入力し、APIを作成 4-3.APIの作成③ APIにメソッドを追加 4-4.APIの作成④ POSTを選択し、Lambda関数を入力し保存 4-5.CORSの有効化 4-6.メソッドリクエストの設定 メソッドリクエストのリクエスト本文にコンテンツタイプを追加 コンテンツタイプ:application/json モデル名:Empty 4-7.統合リクエストの設定 統合リクエストのマッピングテンプレートを追加し、テンプレートを「メソッドリクエストのパススルー」で生成しbody-jsonをbodyにしてから保存する 4-8.統合レスポンスの設定 統合レスポンスにもマッピングテンプレートを「メソッドリクエストのパススルー」で生成し保存する さっきもbody-jsonを変更した場合はこちらも直す 4-9.テスト APIの動作確認を行い、レスポンス本文にkintoneに追加したレコード番号が返ってきたらOK エラーが発生するようならLambda関数のタイムアウトやAPIのLambdaプロキシ統合の使用にチェックが入っていないかなどを疑う 4-10.APIのデプロイ アクションからAPIのデプロイを実行 4-11.URIのチェック APIのURIを控えて、APIの構築が完了です。 5.外部サイト側の設定 5-1.APIの送信 PHPの場合… index.php // APIのURI $url = '<APIのURI>'; // リクエストヘッダ: パラメータを json で渡す $content = json_encode(array( 'text' => 'hogehoge3' )); $context = array( 'http' => array( 'method' => 'POST', 'header' => "Content-Type: application/json\r\n" // APIキーの設定がある場合はコメント外す // . "x-api-key:<APIキー>\r\n" . "Content-Length: " . strlen($content) . "\r\n" , 'content' => $content ) ); // APIのコール $resultJson = file_get_contents($url, false, stream_context_create($context)); // レスポンス確認 $json = mb_convert_encoding($resultJson, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN'); $arr = json_decode($json); $record_no = $arr->body; 参考サイト 参考にさせていただき、ありがとうございました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

エラー「Node Sass does not yet support your current environment」の解決方法

gulpが動かない。久しぶりにgulpを動かしてみたら、nodeエラーが出てコンパイルできない。 原因は、nodeのバージョンが対応していなかったこと。バージョンを変更することで無事解決。 今回はその手順を紹介していきたいと思います。 【エラー文】「node-sassはあなたの開発環境をサポートしていない」 Node Sass does not yet support your current environment とは、「Node Sassは、現在のあなたの開発環境をサポートしていない」ということ。 「詳しくはGithubを確認するよう」にとあるので、その下のGithubのリンクをクリックしてみる。 https://github.com/sass/node-sass/releases/tag/v4.14.1 【確認】node-sassが使用可能なnodeのバージョンをチェック まずは、現状確認。それぞれのOSでnodeの対応バージョンが違うので、自分の環境でどのnodeのバージョンまで使用できるのかを、まずここで確認する。 私の場合は、Windows 64-bitなので、nodeのバージョンは、現在14まで対応している、とある。(2021年11月現在) 【原因判明】自分の開発環境のNode.jsのバージョンを確認したら対応外だった インストールしてNode.jsのバージョンを確認するには、コマンドで「node --version」または「node -v」と打ちます。 私の場合、v16.13.0 つまりバージョン16がインストールされているということでした。 node-sassがサポートしてるのは、先ほどGithubで確認したところバージョン14まで。 ということで、gulpでタスクを動かした際にnode-sassが動かず、エラーがかえってきていたのです。原因判明しました。 私の場合、node.jsをダウングレードしなくてはいけません。 【対処】nvmを使ってnode.jsのバージョンを切り替える ここから下は、私の環境においてやったnodeのダウングレードの方法を紹介します。 nvmをインストールしている人に向けた情報になります。 それ以外の方は、他の方法でnodeのバージョンを変更してください。 では、私の場合はnvmをインストールしているので、それを使ってnode.jsのバージョンを切り替えます。 nvmとは、Node.jsの管理ツールで、インストールした複数のNodeのバージョンを切り替えたりできる便利なツールです。 ▼nvm(Node Version Manager)の公式Githubはこちら https://github.com/coreybutler/nvm-windows 「複数のnodeバージョンを保持し、案件毎にバージョンを切り替えることができるのでオススメ」ということを聞き、先日インストールしたところでした。 その際、最新のnodeに更新してしまったのが原因で今回gulpが動かなくなってしまったようです。 nvmで複数のnodeのバージョンを管理しているので、インストールしている全バージョンを表示させる コマンド「nvm list」で、今現在、インストールしているnodeを表示させます。 *16.13.0 (Currently using 64-bit executable) 14.15.4 2つインストールしているうち、アスタリスクがついている「バージョン16」を現在使用中とのことです。 他に14がインストールされているので、こちらに切り替えれば、gulpが元のように正常に動くはずです。 nvmでエラー発生 exit status 5:文字化け では、nvmのコマンドで切り替えます。nodeバージョンを16から14に切り替えるので コマンド「nvm use 14.15.4」 エラー発生です。しかも文字化けしていて、何のエラーかわかりません!! 結論からいうと、「管理者権限がありません」ということ。 やり直しです。 管理者権限でnodeのバージョンを切り替えます 管理者権限でターミナルを起動 「管理者として実行」を選び、ターミナルを「管理者権限」で起動しなおします。 コマンド「nvm list」を入れて、もう一度インストールしている全node.jsのリストを表示させます。 管理者権限でnodeのバージョンを切り替えます では、今回は管理者権限があるのでそのままコマンド「nvm use 14.15.4」と入れます。14と数字のところは各自切り替えたいバージョンを入れてください。 Now using node v14.15.4(64-bit)と出ました。うまく切り替えられたようです。 nodeのバージョン確認する では、念のため確認してみます。 Node.jsのバージョンを確認するには、コマンドで「node --version」または「node -v」 v14.15.4と出ました。nodeのバージョン切り替え成功です! これでエラーが出ていたnode-sassが動くようになり、無事gulpが使えるようになりました。 以上、どなたかの参考になれば嬉しいです。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

firebaseのauthenticationで管理側で強制的にユーザのパスワードを再設定する方法(続・firefooはいいぞぉ)

こんにちは。もぐめっとです。 最近本格的なシーズンインに向けて初心者なりに練習を頑張ってます。 本日はパスワードを再設定する方法について、よくある例と、2つの強制的にやる方法を紹介します。 よくあるパスワード再設定例 よくある例としてはユーザ側で設定する実装例、もしくはパスワードの再設定メールを送信する実装例があげられます。 しかし、問題はユーザがキャリアメールを使っていて、別のキャリアに変えてメールが届かない状態と、パスワードを忘れてしまった状態のユーザの対応に困ります。 上記の実装だとログインができている、もしくはメールが届くという前提でリセットすることができますが、この問題のパターンだと再設定ができなくなってしまいます。 firebaseのコンソールから再設定という枠もあるのですが、、、 再設定するメールを送るだけという先程の実装例と変わらないことになります。 firebase-adminでパスワードを再設定する ということで問題のユーザにどう対応するかというとfirebase-admin/authにある、updateUserを使うことで強制的にパスワードを再設定できます。 admin .auth() .updateUser(uid, { email: 'modifiedUser@example.com', phoneNumber: '+11234567890', emailVerified: true, password: 'newPassword', displayName: 'Jane Doe', photoURL: 'http://www.example.com/12345678/photo.png', disabled: true, }) .then((userRecord) => { // See the UserRecord reference doc for the contents of userRecord. console.log('Successfully updated user', userRecord.toJSON()); }) .catch((error) => { console.log('Error updating user:', error); }); passwordという項目があるので簡単に再設定ができることを確認できます。 なので更新用に実装をする必要がありますね。 firefooを使う 実はもう一つもっとお手軽な方法があって、それは先日紹介したfirefooを使うというものがあります。 authenticationの一覧を見る機能がありまして、ユーザの詳細を見ると・・・ なんとパスワードの再設定ができてしまうではないか!! 超絶便利です。 よかったら使ってみてください。 まとめ パスワードを再設定する方法としてadmin.auth().updateUser()を使う方法とfirefooのauthentication機能を紹介しました。 パスワードにお困りの方がいたら是非お使いいただければと存じます。 最後に、ワンナイト人狼オンラインというゲームを作ってます!よかったら遊んでね! 他にもCameconやOffchaといったサービスも作ってるのでよかったら使ってね! また、チームビルディングや技術顧問、Firebaseの設計やアドバイスといったお話も受け付けてますので御用の方は弊社までお問い合わせください。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む