カスタム関数+カスタムユーティリティ


初めに


今年初め、私はNetlify機能で実験を始めました.私は、全部のプロセスがどれくらい簡単だったかに本当に興奮していました.しかし、私はライブプロジェクトでそれらを使用するために行ったとき、私はすぐに関数間のいくつかのコードを共有したい.ArduinoでC +をコーディングすることは、かなり簡単でした.私はノードで似たような経験をしたかった.
ノードとJavaScriptに新しいことは、私はこの状況のために正しいと思った解決策を見つけるために私にいくつかの時間がかかりました.
私は、最も基本的な例を通して、きれいな粘板岩から始めます.以下はノード、npm、netlify dev あなたのPCにインストールされます.
まず第一に、私は何を達成したいです.問題のプロジェクトのために、私はstrava APIを呼ぶいくつかの機能を持っています.その一環として、トークンを更新する必要があります.これは、それぞれの関数でやりたいことではありません.ですから、私のコードが乾いていることを保証するために、いくつかの共有機能を作成する必要がありました.

netlify関数は、できるだけ簡単です。


下記
  • まず最初に新しいプロジェクトを始めましょう.新規作成project ディレクトリ.私は、私のものを呼びました
  • クリエイトアnetlify.toml ファイルとfunctions ディレクトリproject .

  • エディットnetlify.toml ファイルを追加し、次の行を追加します
    [build]
        functions = "functions"
    

  • ハローワールド.関数ディレクトリのjsファイル.
    exports.handler = (event, context, callback) => {
        return {
          statusCode: 200,
          headers: { 'Content-Type': 'application/json' },
          body: JSON.stringify('hello-world'),
        }
    }
    

  • すぐにテストしましょう.

    Note, I am using windows terminal with wsl2.


  • プロジェクトディレクトリ(機能フォルダではない)の端末から、コマンドを実行しますnetlify dev . 別の端末でnetlify functions:invoke
  • プロンプトを受け入れ、関数実行を見るべきです.それは私のように見えるものです.

    最初の端末ではコンソールを持っています.ログ出力、および第2に、「こんにちは世界」というメッセージがあります.
  • Netlify関数+ユーティリティノードモジュール


    うまくいけば、これはすべてあなたのためにこれまでに働いています.ない場合は、しようとしてください!我々は、ノードモジュールを構築し、トリッキーな部分に移動するつもりはありません.あなたが考えるかもしれないより簡単です.
    モジュールを公開するためにNPMの中にオプションがありますが、今のところ開発したいです.代わりに、私たちのHello Worldファイルで利用できるローカルノードモジュールを作成します.
  • クリエイトアutils フォルダ内にfunctions フォルダ.

  • クリエイトアpackage.json ファイル.これは手動で実行することができます.npm init ディレクトリ内.注意src/index.js
    {
      "name": "utils",
      "version": "1.0.0",
      "description": "",
      "main": "src/index.js",
      "scripts": {
        "build": "npm run build"
      },
      "author": "[email protected]",
      "license": "MIT"
    } 
    
  • 今すぐ作成src ディレクトリ.そのディレクトリの中でindex.js ファイル.

  • 次のコードをコピーします.

    Note, we are just using CommonJS modules here.


    module.exports.hello =  () => {
      console.trace()
      console.log("hello function")
      return "hello from utils"
    }
    
    module.exports.goodbye =  () => {
      console.trace()
      console.log("goodbye function")
      return "goodbye from utils"
    }
    

  • 次に、パッケージを作成します.関数ディレクトリのJSONファイル.あなたは、我々が以前にしたように、再びNPM Initを使うことができます.最も重要な違いは以下の追加です.
      "dependencies": {
        "utils": "file:utils"
      },
    
  • 私たちはほとんど私たちのfuctionを使用する準備ができているが、1つの重要な最後のステップがあります.機能フォルダから、我々は現在実行しなければなりませんnpm install . これは一度だけのことです.

  • 今すぐ更新hello-world.js ファイル.私がこれについて好きである1つのものは、それがユーティリティ機能を露出しないで、1つの場所ですべてを保ちます.
    const utils = require('utils')
    exports.handler = (event, context, callback) => {
      try {
        ...
        const message = {
          hello: utils.hello(),
          goodbye: utils.goodbye()
        }
        ...
        }
    }
    

  • レッツテスト
  • 確認するnetlify Dev 実行中です.
  • この関数を直接実行します.今回は走るnetlify functions:invoke hello-world --no-identity
  • 出力を確認します.呼び出しウィンドウで表示されるオブジェクト、およびコンソールが表示されます.netlify devのトレース出力
  • それはラップです.


    読書ありがとう.何か間違いが見つかった場合は、またはいくつかのさらに入力してください、コメントで私に知らせてください.また、レポにもgithub あなたがそれをチェックアウトしたいならば.