3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS Lambda error : Unable to import module 'index'

Last updated at Posted at 2018-12-23

AWS Lambda error : Unable to import module 'index'

多くの場合、node_modulesにコードが利用したいモジュールが入っていないことでUnable to import module 'blah blah'といったエラーがでます。

コード例:

//index.js
let hoge = require('Hoge')

エラー例:

Unable to import module 'Hoge': Error

しかし module 'index'とは!

この場合は、次の理由が考えられます。

LambdaにアップロードするZIPファイルの問題

これは私の場合ubuntu環境からWindows環境に移したときに起きました。

わたしのubuntuでフツーに使用しているpackage.json、それを以下のように書いて、

npm run deploy

のコマンドで一発でLambdaにアップロードできるようにしているのですが、

//package.json
・・・前略・・・
  "scripts": {
"deploy": "aws lambda update-function-code --function-name arn:aws:lambda:ap-northeast-1:012334455667:function:auto_Hoge --zip-file fileb://Lambda-Deployment.zip",
"predeploy": "zip -r Lambda-Deployment.zip * -x *.zip *.json *.log"
},
・・・後略・・・

問題なのはこの中の、"predeploy": に記述してあるコマンド。

zip -r Lambda-Deployment.zip * -x *.zip *.json *.log

この部分、ZIPコマンドはWindowsでは使えないということで、Windowsのコマンドプロンプトでzipコマンドを使用可能にする方法を参考にして使用可能にしました。それでZIP化するようにしてnpm run deployでLambdaにアップロードし実行したところ、Unable to import module 'index'エラーが出て使い物になりませんでした。
(ZIPが問題だとわかるまで長い長い道程でした・・・人生とは遠き道程を歩くがごとし。徳川家康)

そのZIP化したファイルの中を覗いてみても、特におかしなところはなさそうです。

ちなみに、PowerShellのCompress-Archiveでなんとかしようと思いましたが、さらに迷宮入りしました。

Windowsだと、右クリックでZIP化してAWSコンソール画面から手動アップロードするしかないのが現状です。

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?