Skip to content

Commit

Permalink
Show problem path in invariant message (#6868)
Browse files Browse the repository at this point in the history
Sometimes, `yarn add` will fail unexpectedly, and it leaves the cache in an invalid state. To cause your yarn cache to become corrupted:

```
$ yarn add [email protected]
yarn add v1.12.3
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
error https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.6.tgz: Extracting tar content of undefined failed, the file appears to be corrupt: "Unexpected end of data"
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

$ yarn cache list
yarn cache v1.12.3
error An unexpected error occurred: "There should only be one folder in a package cache (got  )".
info If you think this is a bug, please open a bug report with the information provided in "/Users/rpatterson/Projects/chess2/www2/client/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/cache for documentation about this command.
```

Note that the error message provides no information about how to resolve the error. This commit adds the problem path to the invariant message. Deleting this problem path will allow `yarn cache list` to work properly again.

The root cause of this issue is yarn#6805 which has been closed. This commit does not resolve the issue, so that issue should likely be reopened.
  • Loading branch information
CGamesPlay authored and arcanis committed Jan 4, 2019
1 parent 960141d commit b1f21a8
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/cli/commands/cache.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export async function getCachedPackagesDirs(config: Config, currentPath: string)
const candidates = await fs.readdir(packageParentPath);
invariant(
candidates.length === 1,
`There should only be one folder in a package cache (got ${candidates.join(',')})`,
`There should only be one folder in a package cache (got ${candidates.join(',')} in ${packageParentPath})`,
);

for (const candidate of candidates) {
Expand All @@ -40,7 +40,7 @@ export async function getCachedPackagesDirs(config: Config, currentPath: string)
const subCandidates = await fs.readdir(candidatePath);
invariant(
subCandidates.length === 1,
`There should only be one folder in a package cache (got ${subCandidates.join(',')})`,
`There should only be one folder in a package cache (got ${subCandidates.join(',')} in ${candidatePath})`,
);

for (const subCandidate of subCandidates) {
Expand Down

0 comments on commit b1f21a8

Please sign in to comment.