TypeScript React项目本地构建正常,AWS CodeBuild构建失败求助
问题分析
报错中的_ending;是ES2022的类公共字段语法,Node.js 12及以下版本默认不支持该语法,而你使用的react-scripts@5.0.1要求Node.js版本至少为14.0.0——你之前尝试的10、12版本都低于这个要求,这是核心问题。另外CodeBuild的缓存可能残留了旧版本Node安装的依赖,导致即使更换版本也报错。
解决方案
1. 指定兼容的Node.js版本
修改buildspec.yml中的runtime-versions,明确指定Node.js 16.x或18.x(这两个LTS版本完全支持react-scripts 5.x和类字段语法),同时修正构建产物的路径:
version: 0.2 phases: install: runtime-versions: nodejs: 16.x # 推荐使用16.x/18.x LTS版本 commands: - npm install # 无需全局安装typescript,项目依赖中已包含 build: commands: - npm run build artifacts: files: - build/**/* # react-scripts build产物默认输出到build目录,这才是需要部署的静态文件 - appspec.yml - scripts/**/* cache: paths: - './node_modules/**/*'
注意:你之前的
artifacts配置包含了src/**/*和public/**/*,这是项目源码而非构建后的可运行静态文件,部署到S3必须上传build目录的内容。
2. 清理CodeBuild缓存
旧缓存可能残留了不兼容的依赖包,导致报错无法消除:
- 手动进入CodeBuild项目设置,找到缓存选项清空现有缓存
- 或者在buildspec的install阶段添加清理命令:
phases: install: runtime-versions: nodejs: 16.x commands: - rm -rf node_modules package-lock.json # 清理旧依赖和锁文件 - npm install
3. 本地验证(可选)
在本地使用Node.js 16.x运行npm run build,确认构建流程正常,排除项目本身的语法问题。
补充说明
react-scripts@5.x官方要求Node.js >=14.0.0、npm >=5.6,必须使用符合要求的版本- 类公共字段语法在Node.js 12.x中需要手动开启
--experimental-class-fieldsflag,但react-scripts的构建流程不会自动添加该配置,因此升级Node版本是最稳妥的解决方式
内容的提问来源于stack exchange,提问作者golifeline
相关产品推荐
相关产品推荐

