[备忘录] 错误:解决 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
bannerAds