カスタム関数+カスタムユーティリティ
9760 ワード
初めに
今年初め、私は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"
},
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
それはラップです.
読書ありがとう.何か間違いが見つかった場合は、またはいくつかのさらに入力してください、コメントで私に知らせてください.また、レポにもgithub あなたがそれをチェックアウトしたいならば.
Reference
この問題について(カスタム関数+カスタムユーティリティ), 我々は、より多くの情報をここで見つけました
https://dev.to/james_foran/netlify-functions-custom-utils-4k2e
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(カスタム関数+カスタムユーティリティ), 我々は、より多くの情報をここで見つけました https://dev.to/james_foran/netlify-functions-custom-utils-4k2eテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol