Eli*_*hle 6 amazon-web-services npm aws-codepipeline aws-codebuild aws-cdk
npm ci在 AWS CodePipeline 中调用时,我遇到了一些奇怪的行为。
NPM文档建议使用npm ci(“全新安装”)而不是npm install在自动化环境中。AWS CDK 文档在其CDK 管道示例中遵循此建议:
const pipeline = new pipelines.CodePipeline(this, 'Pipeline', {
synth: new pipelines.ShellStep('Synth', {
...
commands: [
'npm ci',
'npm run build',
'npx cdk synth',
],
}),
});
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试此操作时,我的管道在npm ci命令中失败,并出现奇怪的错误消息:
[Container] 2022/12/14 16:00:37 Running command npm ci
npm ERR! Cannot read property 'aws-cdk-lib' of undefined
Run Code Online (Sandbox Code Playgroud)
该包aws-cdk-lib是我的依赖项中的第一个条目package.json。所以看起来 CodeBuild 在通过安装时无法解析我的依赖项npm ci。npm ci奇怪的是,当我替换为...时,一切正常npm install,但我想找到一种方法来使其与 一起工作npm ci。
不起作用的原因npm ci是 CodeBuild 使用旧版本的 npm。当我检查时,npm 的最新版本是 9.2.0,但 CodeBuild 使用的是 6.14.17。
在运行之前更新 npmnpm ci修复了该问题:
const pipeline = new pipelines.CodePipeline(this, 'Pipeline', {
synth: new pipelines.ShellStep('Synth', {
...
// Update npm before running commands
installCommands: ['npm i -g npm@latest'],
commands: [
'npm ci',
'npm run build',
'npx cdk synth',
],
}),
});
Run Code Online (Sandbox Code Playgroud)
可以在此处找到问题和修复的最小工作示例。
| 归档时间: |
|
| 查看次数: |
3226 次 |
| 最近记录: |