[BUG] npm ci fails after installing @aws/pdk
tmokmss opened this issue ยท 11 comments
Describe the bug
Running npm ci
fails after installing pdk.
Similar problem as #381. It seems the issue has been re-introduced somewhere.
Expected Behavior
npm ci successes
Current Behavior
npm ci fails
Reproduction Steps
npm i @aws/pdk
npm ci
# npm ERR! `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
Possible Solution
No response
Additional Information/Context
No response
PDK version used
0.23.30
What languages are you seeing this issue on?
Typescript
Environment details (OS name and version, etc.)
macOS 14.3.1
Are you able to please share a sample codebase so I can repro or provide steps to repro?
also have you tried deleting the lock file and running npm install
first?
@agdimech
You should be able to reproduce it by just running the two commands in the issue description.
More specifically:
$ mkdir pdk-repro
$ cd pdk-repro
$ npm init -y
$ npm install @aws/pdk
$ npm ci
npm ERR! code EUSAGE
npm ERR!
npm ERR! `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
And my environment:
$ npm --version
10.2.3
$ node --version
v20.10.0
also have you tried deleting the lock file and running npm install first?
This issue reproduces right after initializing a project by npm init -y
.
Thanks for the info.
The issue stems from the fact that bundleDependencies
is not super well supported by pnpm (and most package managers) and at pack
time, it just adds whatever is currently within the packages node_modules
. This is problematic as most of the actual dependencies are stored in the root node_modules
. We previously had a script that would link in any missing transitive bundleDependencies
but this doesn't handle the case for multiple versions of the same package.
I re-worked all of this to use pnpm deploy
which allows you to deploy a package to a new directory and install all deps directly in the node_modules
in a flat fashion (similar to npm). This resolves the issues as now multiple package with the same version are correctly included via package node_modules
nesting.
Here is the PR: #756
Apologies that you ran into this again, this should fix it once and for all :)
Great to hear that. Looking forward to the new release :)
Seems that my latest fix isn't working. Upon inspecting the tar.gz there are no nested node_modules
however locally I can see them. Will need to investigate into this further to see why the distributable doesn't match. Apologies.
Been doing some more digging and the actual tgz file looks correct locally, but for some reason it is missing the nested node_modules
on the CI publishing workflow. Could potentially be a versioning issue with pnpm/npm, will keep digging.
Have tried multiple fixes on my end to no avail. This is actually a bug with npm as per: npm/cli#6787
The only fix for this at the moment is to either:
- Use and older version of npm (7.0.8 works) which is the last known version of npm that didn't have the bug ๐ข
- run
npm i && npm i
This issue is now marked as stale because it hasn't seen activity for a while. Add a comment or it will be closed soon. If you wish to exclude this issue from being marked as stale, add the "backlog" label.
Closing this issue as it hasn't seen activity for a while. Please add a comment @mentioning a maintainer to reopen. If you wish to exclude this issue from being marked as stale, add the "backlog" label.
@agdimech FYI even running npm i
does not fix the problem. Currently as long as @aws/pdk
is installed, we cannot use npm ci
by any means. Is it expected? We haven't seen any other libraries behaving like this.
# in an empty directory
npm init -y
npm i @aws/pdk
npm ci # > fail
npm i && npm ci #> fail
@agdimech We are still experiencing the same issue with npm 10.9.0.
We use PDK to generate architecture diagram for our CDK services. Our CI/CD depends on npm ci
so it's a blocker for us.
We would appreciate if you could offer a workaround or a fix. Thank you!
$ npm init -y
$ npm i @aws/pdk
$ npm ci
npm error code EUSAGE
npm error
npm error `npm ci` can only install packages when your package.json and package-lock.json or npm-shrinkwrap.json are in sync. Please update your lock file with `npm install` before continuing.
npm error
npm error Missing: chalk@2.4.2 from lock file
npm error Missing: execa@0.1.2 from lock file
npm error Missing: @pnpm/logger@5.2.0 from lock file
npm error Missing: js-yaml@0.0.6 from lock file
npm error Missing: bole@5.0.16 from lock file
npm error Missing: ndjson@2.0.0 from lock file
npm error Missing: fast-safe-stringify@2.1.1 from lock file
npm error Missing: individual@3.0.0 from lock file
npm error Missing: json-stringify-safe@5.0.1 from lock file
npm error Missing: minimist@1.2.8 from lock file
npm error Missing: readable-stream@3.6.2 from lock file
npm error Missing: split2@3.2.2 from lock file
npm error Missing: through2@4.0.2 from lock file
npm error Missing: inherits@2.0.4 from lock file
npm error Missing: string_decoder@1.3.0 from lock file
npm error Missing: util-deprecate@1.0.2 from lock file
npm error Missing: safe-buffer@5.2.1 from lock file
npm error Missing: path-is-absolute@1.0.1 from lock file
npm error Missing: balanced-match@1.0.2 from lock file
npm error Missing: concat-map@0.0.1 from lock file
npm error Missing: is-arrayish@0.2.1 from lock file
npm error Missing: type-fest@0.6.0 from lock file
npm error Missing: mimic-fn@3.1.0 from lock file
npm error Missing: hosted-git-info@6.1.1 from lock file
npm error Missing: p-limit@2.3.0 from lock file
npm error Missing: lines-and-columns@1.2.4 from lock file
npm error Missing: normalize-package-data@2.5.0 from lock file
npm error Missing: type-fest@0.6.0 from lock file
npm error Missing: glob@7.2.3 from lock file
npm error Missing: fs-extra@8.1.0 from lock file
npm error Missing: @types/node@22.7.9 from lock file
npm error Missing: arg@4.1.3 from lock file
npm error Missing: typescript@5.6.3 from lock file
npm error Missing: undici-types@6.19.8 from lock file
npm error Missing: signal-exit@4.1.0 from lock file
npm error Missing: ansi-styles@3.2.1 from lock file
npm error Missing: escape-string-regexp@1.0.5 from lock file
npm error Missing: supports-color@5.5.0 from lock file
npm error Missing: color-convert@1.9.3 from lock file
npm error Missing: color-name@1.1.3 from lock file
npm error Missing: has-flag@3.0.0 from lock file
npm error Missing: @zkochan/which@2.0.3 from lock file
npm error Missing: execa@5.1.1 from lock file
npm error Missing: path-name@1.0.0 from lock file
npm error Missing: isexe@2.0.0 from lock file
npm error Missing: lru-cache@7.18.3 from lock file
npm error Missing: p-try@2.2.0 from lock file
npm error Missing: hosted-git-info@2.8.9 from lock file
npm error Missing: resolve@1.22.8 from lock file
npm error Missing: semver@5.7.2 from lock file
npm error Missing: is-core-module@2.15.1 from lock file
npm error Missing: path-parse@1.0.7 from lock file
npm error Missing: supports-preserve-symlinks-flag@1.0.0 from lock file
npm error Missing: hasown@2.0.2 from lock file
npm error Missing: function-bind@1.1.2 from lock file
npm error Missing: minimatch@3.1.2 from lock file
npm error Missing: brace-expansion@1.1.11 from lock file
npm error Missing: jsonfile@4.0.0 from lock file
npm error Missing: universalify@0.1.2 from lock file
npm error
npm error Clean install a project
npm error
npm error Usage:
npm error npm ci
npm error
npm error Options:
npm error [--install-strategy <hoisted|nested|shallow|linked>] [--legacy-bundling]
npm error [--global-style] [--omit <dev|optional|peer> [--omit <dev|optional|peer> ...]]
npm error [--include <prod|dev|optional|peer> [--include <prod|dev|optional|peer> ...]]
npm error [--strict-peer-deps] [--foreground-scripts] [--ignore-scripts] [--no-audit]
npm error [--no-bin-links] [--no-fund] [--dry-run]
npm error [-w|--workspace <workspace-name> [-w|--workspace <workspace-name> ...]]
npm error [-ws|--workspaces] [--include-workspace-root] [--install-links]
npm error
npm error aliases: clean-install, ic, install-clean, isntall-clean
npm error
npm error Run "npm help ci" for more info