JavaScript
Claudia.js

claudia.jsでLambdaのJavaScriptを更新する際にはまった話

claudia.jsを利用してアプリの開発を行っていますが、LambdaへのJavaScriptファイルのデプロイではまってしまいました。

根本原因は分からないままですがデプロイは成功できるようになったため同じ問題に出会った方のためにもメモしておきます。

原因がお分かりになる方がいらっしゃれば教えて頂けるとうれしいです。


発生した現象

Lambdaに配置したJSを更新するために実行したコマンドは以下です。

$ claudia update

上記を実行すると以下のエラーが発生しました。

validating package

Error: Cannot find module '/var/folders/51/xxxx_xxxxxxxxxxxxxxxxxx/Y/zzzz/<package name>-<package ver>-wwwwww/package/dist/app'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:603:15)
at Function.Module._load (internal/modules/cjs/loader.js:529:25)
at Module.require (internal/modules/cjs/loader.js:659:17)
at require (internal/modules/cjs/helpers.js:22:18)
at validatePackage (/Users/hidekita/dev/claudia-app/node_modules/claudia/src/tasks/validate-package.js:16:15)
at initEnvVarsFromOptions.then.then.then.then.then.then.then.dir (/Users/hidekita/dev/claudia-app/node_modules/claudia/src/commands/create.js:343:10)
at process.internalTickCallback (internal/process/next_tick.js:77:7)
cannot require ./dist/app after clean installation. Check your dependencies.


上記エラーが発生した状況

元々、claudiaで配置していたapp.jsをES5で作成し、そのファイルをGitにより管理していました。

その後、モダンなJSを利用したいと考えて、BabelによりJSファイルをコンパイルするようにしました。コンパイルにより生成したJSファイルはdistフォルダに出力するようにしました。このdistフォルダはGitで管理する必要はないと考え、.gitignoreファイルを使ってdistフォルダを無視するようにしました。

Mac 10.14.2

node 11.4.0

npm 6.5.0

開発に利用したNPMパッケージ(devDependenciesの設定)。

    @babel/core: 7.2.2

@babel/preset-env: 7.2.3
babel-loader: 8.0.4
webpack: 4.28.3
webpack-cli: 3.1.2


成功した方法

コンパイル後のapp.jsもGitで管理するように、.gitignoreファイルを修正した上でLambda上のJSの更新を実施したら成功しました。