質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

143閲覧

Lambda + Node.js v20での、「X is not a function」の原因が分からない

kong

総合スコア181

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2024/02/17 02:11

実現したいこと

お世話になります。

久しくJSに触っていなかったので知らなかったのですが、Lambda + Node.js v20ではESM仕様で書かないといけないらしく、昔書いたコードを書き直したりして試しているのですが、
実行時に 「X is not a function」のエラーが発生していています。

気になるが、そもそも書き方があっているか不安で、どなたかご教示いただけないでしょうか。

発生している問題・分からないこと

Lambda + Node.js v20で実行時に「X is not a function」が発生する

エラーメッセージ

error

1{ 2 "errorType": "TypeError", 3 "errorMessage": "InsertEH is not a function", 4 "trace": [ 5 "TypeError: exeHoge is not a function", 6 " at Runtime.handler (file:///var/task/index.mjs:60:25)", 7 " at Runtime.handleOnceNonStreaming (file:///var/runtime/index.mjs:1173:29)" 8 ] 9}

該当のソースコード

javascript

1//●index.mjs 2 3import exeHoge from './executeHoge.mjs'; 4export const handler = async(event) => { 5 6 let param = await exeHoge('hoge', 'fuga'); 7 8(中略) 9 10}; 11

javascript

1//●executeHoge.mjs 2 3const executeHoge = (param1, param2) => { 4 5(中略) 6 7}; 8export default {executeHoge}; 9 10 11//※上記2ファイルは同じ階層

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

よくある原因の以下は確認しました
・インポートモジュールのパスが間違っている
・インポートモジュールの名前が間違っている

後は以下ですが、不慣れなので確証が得られません
・呼び出し方法が間違っている

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mike2mike4

2024/02/17 04:58

executeHoge.mjsの中でexeHogeは定義してますか?
kong

2024/02/17 07:38

ありがとうございます。 定義していませんでした。 exeHogeの定義というと、以下のような感じでしょうか? (依然として「X is not a function」のエラーが発生していますが。。) ``` const executeHoge = function exeHoge(param1, param2) { (中略) }; export default {executeHoge}; ```
mike2mike4

2024/02/17 08:10

const executeHoge = は、必要でしょうか? 必要でない場合これを削除してexportも、 export default {exeHoge}; となります。 あと、InsertEHも定義されてないようです。
kong

2024/02/17 08:50

御指摘ありがとうございます。 CJSの書き方が混じってました。 以下のように書き換えたら、上手く行きました。 ``` export default function exeHoge(param1, param2) { (中略) }; ``` お付き合いいただきありがとうございます。
kong

2024/02/17 08:51

コメントありがとうございます。 ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
mike2mike4

2024/02/17 08:56

いえ、私は自分の勉強と皆さんのお役に立てればそれでいいので、自分で要約してベストアンサーにしてください。
guest

回答1

0

自己解決

「executeHoge.mjs」の、ESMの書き方が誤っていました。
以下のように修正して上手く行きました。

javascript

1export default function exeHoge(param1, param2) { 2 3(中略) 4 5};

アドバイスくださいました、mike2mike4さん
本当にありがとうございます。

投稿2024/02/17 09:52

kong

総合スコア181

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問