{"record":{"id":"8c6c3c70a12c8d54","repo":"pnpm/pnpm","slug":"too-many-params","errorCode":"TOO_MANY_PARAMS","errorMessage":"`pnpm cache view` only accepts one package name","messagePattern":"`pnpm cache view` only accepts one package name","errorType":"exception","errorClass":"PnpmError","httpStatus":null,"severity":"error","filePath":"pnpm11/cache/commands/src/cache.cmd.ts","lineNumber":106,"sourceCode":"      // A package's metadata can be cached under any of the metadata directories\n      // depending on the resolution mode used when it was fetched.\n      const deleted = await Promise.all(\n        [ABBREVIATED_META_DIR, FULL_META_DIR, FULL_FILTERED_META_DIR].map((metaDir) =>\n          cacheDelete({\n            ...opts,\n            cacheDir: path.join(opts.cacheDir, metaDir),\n            registry: opts.cliOptions['registry'],\n          }, params.slice(1))\n        )\n      )\n      return [...new Set(deleted.flatMap((result) => result.split('\\n')).filter(Boolean))].sort().join('\\n')\n    }\n    case 'view': {\n      if (!params[1]) {\n        throw new PnpmError('MISSING_PACKAGE_NAME', '`pnpm cache view` requires the package name')\n      }\n      if (params.length > 2) {\n        throw new PnpmError('TOO_MANY_PARAMS', '`pnpm cache view` only accepts one package name')\n      }\n      const storeDir = await getStorePath({\n        pkgRoot: process.cwd(),\n        storePath: opts.storeDir,\n        pnpmHomeDir: opts.pnpmHomeDir,\n      })\n      return cacheView({\n        ...opts,\n        cacheDir,\n        storeDir,\n        registry: opts.cliOptions['registry'],\n      }, params[1])\n    }\n    default:\n      return help()\n  }\n}\n","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/pnpm/pnpm/blob/5b11d3a15b9022a2109cb18ed96a5d652630371f/pnpm11/cache/commands/src/cache.cmd.ts#L88-L124","documentation":"Usage error from `pnpm cache view` when more than one package name is supplied (`params.length > 2`, i.e. `view` plus 2+ names). The viewer resolves a single package's cached metadata, so extra arguments are rejected rather than silently ignored.","triggerScenarios":"`pnpm cache view foo bar`, or a script looping incorrectly so multiple names land in one invocation; also shell glob expansion producing several matches.","commonSituations":"Assuming view behaves like `pnpm cache delete` which accepts broader input; unquoted globs such as `pnpm cache view @scope/*` expanding to multiple names.","solutions":["Query one package per invocation: `pnpm cache view foo` then `pnpm cache view bar`","Quote globs or loop over candidates in scripts instead of passing them all at once"],"exampleFix":"# before\npnpm cache view lodash express\n# after\npnpm cache view lodash && pnpm cache view express","handlingStrategy":"validation","validationCode":"if (params.length > 2) {\n  console.error('pnpm cache view accepts exactly one package name')\n  process.exit(1)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Quote globs so they reach pnpm unresolved only if a single name is intended","Loop over packages in scripts instead of batching them into one view call"],"tags":["cli","cache","usage","argument-validation"],"backgroundTag":null,"analyzedSha":"5b11d3a15b9022a2109cb18ed96a5d652630371f","analyzedAt":"2026-08-16T13:18:59.198Z","schemaVersion":2},"datasetVersion":"2026-08-16T18:17:16.020Z"}