node.jsで、「export const handler = async (event) => {…」「exports.handler = async (event) => {…」 これらは、書き方同じ?

「export const handler = async (event) => {」と
「exports.handler = async (event) => {」は、

基本的な構文の違いがあります。Node.jsにおいて、モジュールのエクスポート方法に関連しています。

  1. export const handler = async (event) => {
    これはECMAScriptモジュール(ESM)のエクスポート構文です。ESMはNode.js 14以降でサポートされています。この形式を使用すると、モジュールのエクスポートとインポートにimportおよびexportキーワードを使用できます。
    (新しい方)
  2. exports.handler = async (event) => {
    これはCommonJSモジュールのエクスポート構文です。Node.jsの古いバージョンから使用されており、多くの既存のNode.jsコードで見られます。exportsオブジェクトを使用して、モジュールのエクスポートを行います。
    (古い方)

一般的に、新しいプロジェクトやNode.jsバージョン14以降を使用する場合、ESM構文(exportキーワード)(1の方)を使用することが推奨されています。ただし、既存のコードベースやCommonJSモジュールを使用する必要がある場合は、exports(古い方)を使用することもできます。

選択肢はどちらも正しい構文であり、どちらを選ぶかはプロジェクトの要件とNode.jsバージョンに依存します。ただし、新しいプロジェクトではESMを使用することが一般的になっています。

 
 
 
 
MacとAWS Lambdaで動作する汎用JavaScriptサンプルプログラム

MacとAWS Lambdaで動作する汎用JavaScriptサンプルプログラム

MacとAWS Lambdaで動作する汎用JavaScriptサンプルプログラム

MacとAWS Lambdaで動作する汎用JavaScriptサンプルプログラム
MacとAWS Lambdaで動作する汎用JavaScriptサンプルプログラム

JavaScript開発者のためのMacとAWS Lambdaで動作する汎用的なサンプルプログラムを紹介します。このプログラムは、Mac OSとAWS Lambdaの両方の環境でテストされ、動作が保証されています。ここでは、プラットフォームに依存せず動作するコードの書き方を解説します。

// 判定用の変数を定義
const isMacOS = process.platform === 'darwin';

if (isMacOS) {
    // Mac OS上で実行するコード
    console.log('Mac OSで実行されています。');

    // 空のイベントオブジェクトを作成
    const event = {};

    // Lambda関数を呼び出す
    exports.handler(event);

} else {
    // 他のプラットフォーム上で実行する場合のコード
    console.log('Mac OS以外のプラットフォームで実行されています。');
}
    

このサンプルプログラムは、開発者がMac OSまたはAWS Lambdaを使ってJavaScriptを実行する際に役立ちます。process.platformを使用して現在の実行環境を判定し、それに応じた処理を行います。これにより、クロスプラットフォームな開発が容易になります。

結論

このように、JavaScriptで環境に依存しないプログラミングを行う方法は、多様な開発環境に対応する上で非常に有効です。MacとAWS Lambdaの両方で動作するこのサンプルプログラムを参考にして、柔軟な開発を進めましょう。