nodejsでSveltekitをbuildする際に出るエラーの対処法
calendar_today
2023-12-07
insights
views: 229
thumbnail images

問題

Sveltekitをbuildする際に、以下のようなエラーが出る。

"mock-aws-s3" is imported by "mock-aws-s3?commonjs-external", but could not be resolved – treating it as an external dependency.
"aws-sdk" is imported by "aws-sdk?commonjs-external", but could not be resolved – treating it as an external dependency.
"nock" is imported by "nock?commonjs-external", but could not be resolved – treating it as an external dependency.

ただこの文章は出てもビルドは通る。

その後、アプリを起動するときにエラーが発生する。

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'mock-aws-s3' imported from /home/gmn/work/test/build/server/chunks/5-4a6e0b61.js
    at new NodeError (node:internal/errors:399:5)
    at packageResolve (node:internal/modules/esm/resolve:889:9)
    at moduleResolve (node:internal/modules/esm/resolve:938:20)
    at defaultResolve (node:internal/modules/esm/resolve:1153:11)
    at nextResolve (node:internal/modules/esm/loader:163:28)
    at ESMLoader.resolve (node:internal/modules/esm/loader:838:30)
    at ESMLoader.getModuleJob (node:internal/modules/esm/loader:424:18)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:77:40)
    at link (node:internal/modules/esm/module_job:76:36)

原因

ここに書いてある。全ては読んでいないが、bcryptによるエラーらしい。

https://github.com/mapbox/node-pre-gyp/issues/661

Vercelも認識しているっぽい。

https://vercel.com/guides/why-does-my-serverless-function-work-locally-but-not-when-deployed

ちなみに下のbcryptの対処法を行ってもbuild時のエラーは出るので、それぞれ対処する必要がありそう。

対処法

build時のエラーの対処法

出ている3つをインストールすることで消すことができる。

npm i mock-aws-s3 aws-sdk nock

このとき、dev-dependenciesではなくdependenciesに入るようにする。(-Dをつけない)

アプリ起動時のエラーの対処法

bcryptの使用をやめ、bcryptjsを使用する。

npm remove bcrypt @types/bcrypt
npm i bcryptjs @types/bcryptjs
calendar_today
2023-12-07
insights
views: 229