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

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

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

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

0回答

3585閲覧

【Lambda/Node.js】テスト実行すると"errorMessage": "SyntaxError: Cannot use import statement outside a module"

tonkotsu_ramen

総合スコア6

AWS Lambda

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2021/08/28 06:51

【やろうとしていること】

ローカルでnode.jsアプリを作り、それをzip化してlambdaにアップロードして実行させようとしています。
アプリにはtypeormをインストールをし、RDSと接続しています。

【現在の状況】

ローカルではマイグレーションやCRUDは問題なくできたので、次のステップで、そのアプリをLambdaにアップロードしました。(zipファイルで)

GUIにてテストを実行したところ、下記のエラーメッセージがでました。

{ "errorType": "Error", "errorMessage": "Must use import to load ES Module: /var/task/index.js\nrequire() of ES modules is not supported.\nrequire() of /var/task/index.js from /var/runtime/UserFunction.js is an ES module file as it is a .js file whose nearest parent package.json contains \"type\": \"module\" which defines all .js files in that package scope as ES modules.\nInstead rename index.js to end in .cjs, change the requiring code to use import(), or remove \"type\": \"module\" from /var/task/package.json.\n", "trace": [ "Error [ERR_REQUIRE_ESM]: Must use import to load ES Module: /var/task/index.js", "require() of ES modules is not supported.", "require() of /var/task/index.js from /var/runtime/UserFunction.js is an ES module file as it is a .js file whose nearest parent package.json contains \"type\": \"module\" which defines all .js files in that package scope as ES modules.", "Instead rename index.js to end in .cjs, change the requiring code to use import(), or remove \"type\": \"module\" from /var/task/package.json.", "", " at Object.Module._extensions..js (internal/modules/cjs/loader.js:1089:13)", " at Module.load (internal/modules/cjs/loader.js:937:32)", " at Function.Module._load (internal/modules/cjs/loader.js:778:12)", " at Module.require (internal/modules/cjs/loader.js:961:19)", " at require (internal/modules/cjs/helpers.js:92:18)", " at _tryRequire (/var/runtime/UserFunction.js:75:12)", " at _loadUserApp (/var/runtime/UserFunction.js:95:12)", " at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)", " at Object.<anonymous> (/var/runtime/index.js:43:30)", " at Module._compile (internal/modules/cjs/loader.js:1072:14)" ] }

わかないこと、実現したいこと

どのあたりに原因があるのかわからない。
テストでエラーの発生なく、DBの値を表示させたい。

【コード】

内容としては、id=1のデータを取得するだけのものです。

js

1// 実行されるファイルとしては、./index.js 2import { createConnection, getRepository, getConnection } from "typeorm"; 3import { User } from "./entity/User"; 4 5exports.handler = async (event) => { 6 createConnection({ 7 type: "mysql", 8 host: "*******************", 9 port: 3306, 10 username: "admin", 11 password: "password", 12 database: "DBNAME", 13 entities: [User], 14 synchronize: true, 15 logging: false, 16 }) 17 .then((connection) => { 18 const userRepository = getRepository(User); 19 const userA = userRepository.findOne(1); 20 return userA; 21 }) 22 .catch((error) => console.log(error)); 23}; 24

json

1// package.json 2{ 3 "name": "new-typeorm-project", 4 "version": "0.0.1", 5 "description": "Awesome project developed with TypeORM.", 6 "devDependencies": { 7 "ts-node": "3.3.0", 8 "@types/node": "^8.0.29", 9 "typescript": "3.3.3333" 10 }, 11 "dependencies": { 12 "typeorm": "0.2.37", 13 "reflect-metadata": "^0.1.10", 14 "mysql": "^2.14.1" 15 }, 16 "type": "module", 17 "scripts": { 18 "start": "ts-node src/index.ts" 19 } 20} 21

【やってみたこと】

エラーメッセージ等調べて下記のことを試してみました。
・ファイル名をjs⇨tsに変えてみた。
⇨変化なし。

package.json"type": "module""type": "commonjs"に変更すると、下記のようにエラーメッセージが変わりました。

{ "errorType": "Runtime.UserCodeSyntaxError", "errorMessage": "SyntaxError: Cannot use import statement outside a module", "trace": [ "Runtime.UserCodeSyntaxError: SyntaxError: Cannot use import statement outside a module", " at _loadUserApp (/var/runtime/UserFunction.js:98:13)", " at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)", " at Object.<anonymous> (/var/runtime/index.js:43:30)", " at Module._compile (internal/modules/cjs/loader.js:1072:14)", " at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)", " at Module.load (internal/modules/cjs/loader.js:937:32)", " at Function.Module._load (internal/modules/cjs/loader.js:778:12)", " at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)", " at internal/main/run_main_module.js:17:47" ] }

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問