[备忘录] 错误:解决 spawnSync docker ENOENT 问题
首先
在尝试使用 AWS CDK 创建和部署 Lambda 时,发生了以下错误。
% cdk deploy
Error: spawnSync docker ENOENT
at Object.spawnSync (node:internal/child_process:1111:20)
at spawnSync (node:child_process:814:24)
at dockerExec (/Users/user/Documents/app/node_modules/aws-cdk-lib/core/lib/private/asset-staging.js:1:3385)
at Function.fromBuild (/Users/user/Documents/app/node_modules/aws-cdk-lib/core/lib/bundling.js:1:4085)
at new Bundling (/Users/user/Documents/app/node_modules/aws-cdk-lib/aws-lambda-nodejs/lib/bundling.js:1:2315)
at Function.bundle (/Users/user/Documents/app/node_modules/aws-cdk-lib/aws-lambda-nodejs/lib/bundling.js:1:599)
at new NodejsFunction (/Users/user/Documents/app/node_modules/aws-cdk-lib/aws-lambda-nodejs/lib/function.js:1:1221)
at new AppStack (/Users/user/Documents/app/lib/app-stack.ts:18:20)
at Object.<anonymous> (/Users/user/Documents/app/bin/app.ts:7:1)
at Module._compile (node:internal/modules/cjs/loader:1103:14) {
errno: -2,
code: 'ENOENT',
syscall: 'spawnSync docker',
path: 'docker',
spawnargs: [
'build',
'-t',
'cdk-8d408efea9f2433343861a553b56c28ac5bcb99a4716e393c58d1b7029a59b35',
'--platform',
'linux/amd64',
'--build-arg',
'IMAGE=public.ecr.aws/sam/build-nodejs16.x',
'--build-arg',
'ESBUILD_VERSION=0',
'/Users/user/Documents/app/node_modules/aws-cdk-lib/aws-lambda-nodejs/lib'
]
}
执行过的事
由于我使用的是macOS,并且根据下面的文章和错误信息,我安装了esbuild。
% npm install --save-dev esbuild@0
在那之后,我再次执行了 cdk deploy,成功地进行了部署。
最后
记下所参考的文献。
-
- https://qiita.com/derodero24/items/a0b05ef026f63fca8f03
- https://docs.aws.amazon.com/cdk/api/v1/docs/aws-lambda-nodejs-readme.html#local-bundling