Help us understand the problem. What is going on with this article?

AWS Lambda error : Unable to import module 'index'

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コンソール画面から手動アップロードするしかないのが現状です。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away