AWS SAM执行sam build构建报错Esbuild Failed: cannot find esbuild
问题场景
通过sam init初始化基于NodeJS与TypeScript的AWS SAM示例项目hello-world-typescript,执行sam build命令构建应用时失败,核心报错如下:
Building codeuri: C:\RF\GitHub\rf-09-06\hello-world runtime: nodejs14.x metadata: {'BuildMethod': 'esbuild', 'BuildProperties': {'Minify': True, 'Target': 'es2020', 'Sourcemap': True, 'EntryPoints': ['app.ts']}} architecture: x86_64 functions: ['HelloWorldFunction'] Running NodejsNpmEsbuildBuilder:CopySource Running NodejsNpmEsbuildBuilder:NpmInstall Running NodejsNpmEsbuildBuilder:EsbuildBundle Build Failed Error: NodejsNpmEsbuildBuilder:EsbuildBundle - Esbuild Failed: cannot find esbuild
排查解决步骤
按以下顺序逐一排查即可解决:
- 进入函数代码目录安装依赖:先切到
hello-world文件夹(也就是和函数内package.json同层级的目录,不要在项目根目录操作),执行npm install安装所有声明的依赖。SAM的esbuild构建逻辑不会自动拉取函数目录下的devDependencies,初始化项目后如果没手动装过依赖,大概率会触发这个报错。 - 手动补装esbuild依赖:如果上一步执行完还是报错,检查函数目录下的
package.json的devDependencies里是否有esbuild,如果没有,直接在当前目录执行npm install esbuild --save-dev安装本地依赖。注意不要依赖全局安装的esbuild,SAM构建时只会识别项目本地node_modules里的esbuild包,全局安装的包不会被检索到。 - 校验esbuild安装有效性:依赖安装完成后,在函数目录执行
npx esbuild --version,如果能正常输出esbuild版本号,说明本地依赖安装正常,再切回template.yaml所在的项目根目录,重新执行sam build即可。 - 排查SAM CLI版本问题:如果上述操作都无效,执行
sam --version查看当前SAM CLI版本,1.50.0之前的旧版本在Windows环境下存在esbuild路径识别bug,升级到最新稳定版SAM CLI后重新尝试构建。 - Windows环境路径校验:确认项目所在的全路径没有中文、特殊符号或异常空格,执行构建命令时终端当前工作目录必须是项目根目录(template.yaml所在层级),避免路径解析错误导致找不到依赖。
注意:不要随意修改template.yaml里的
BuildMethod: esbuild配置,这是TypeScript类SAM项目官方默认的构建方式,随意替换为其他构建方法会引发额外的编译问题。
内容的提问来源于stack exchange,提问作者Toba
相关产品推荐
相关产品推荐

