使用AWS CodeBuild构建Angular项目时遇‘ng/run未找到’错误求助
解决AWS CodeBuild中Angular构建的"ng: not found"和"run: not found"问题
咱们来一步步拆解你遇到的两个问题,然后给出靠谱的解决办法:
第一个错误:"ng: not found"
当你直接执行ng build-prod时,CodeBuild环境找不到ng命令,核心原因是:默认npm install会把Angular CLI安装在项目本地的node_modules/.bin目录里,而这个目录并没有被加入CodeBuild的系统PATH中,所以直接敲ng系统根本找不到它。
第二个错误:"run: not found"
你改成run build-prod是写错了命令格式——run是npm的子命令,必须跟在npm后面使用,单独的run不是一个合法的系统命令,自然会报错。
正确的解决方案(任选其一即可)
方案1:用npm run执行脚本(最推荐)
首先确认你的package.json里已经配置了对应的构建脚本,比如:
{ "scripts": { "build-prod": "ng build --configuration production" } }
然后把CodeBuild的build阶段命令改成:
phases: build: commands: - npm install - npm run build-prod
这个方式最稳妥,因为npm会自动从本地node_modules/.bin目录里找到ng命令来执行,不用额外配置路径。
方案2:用npx直接调用本地ng命令
npx可以自动定位本地安装的包的可执行文件,所以命令可以写成:
phases: build: commands: - npm install - npx ng build --configuration production
如果你的package.json里已经有build-prod脚本,也可以写成npx npm run build-prod,不过方案1更简洁。
方案3:手动把本地bin目录加入PATH
如果你坚持要直接用ng命令,可以在执行前把本地bin目录添加到环境变量里:
phases: build: commands: - npm install - export PATH=$PATH:./node_modules/.bin - ng build --configuration production
额外小提示
- 建议在CodeBuild中使用包含合适Node.js版本的镜像,比如
aws/codebuild/amazonlinux2-x86_64-standard:5.0,它自带较新的Node.js,能避免很多版本兼容问题。 - 如果你的项目需要特定版本的Node.js,可以在install阶段用nvm切换:
phases: install: commands: - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - . ~/.nvm/nvm.sh - nvm install 18 build: commands: - npm install - npm run build-prod
内容的提问来源于stack exchange,提问作者ujjwal garg
相关产品推荐
相关产品推荐

