jackwener/OpenCLI · error · ArgumentError
Unsupported --filter
Error message
Unsupported --filter
What it means
ArgumentError (exit code 2, usage error) thrown when the --filter option is given a value other than 'rocket'. Currently only the 'rocket' filter is supported, and the message names the rejected value plus the supported one.
Source
Thrown at clis/coupang/search.js:424
strategy: Strategy.COOKIE,
browser: true,
args: [
{ name: 'query', required: true, positional: true, help: 'Search keyword' },
{ name: 'page', type: 'int', default: 1, help: 'Search result page number' },
{ name: 'limit', type: 'int', default: 20, help: 'Max results (max 50)' },
{ name: 'filter', required: false, help: 'Optional search filter (currently supports: rocket)' },
],
columns: ['rank', 'product_id', 'title', 'price', 'unit_price', 'rating', 'review_count', 'rocket', 'delivery_type', 'delivery_promise', 'url'],
func: async (page, kwargs) => {
const query = String(kwargs.query || '').trim();
if (!query) {
throw new ArgumentError('query cannot be empty');
}
const pageNumber = parsePageArg(kwargs.page, 1);
const limit = parseLimitArg(kwargs.limit, 20, 50);
const filter = String(kwargs.filter || '').trim().toLowerCase();
if (filter && filter !== 'rocket') {
throw new ArgumentError(`Unsupported --filter "${filter}" (supported: rocket)`);
}
const initialPage = filter ? 1 : pageNumber;
const url = `https://www.coupang.com/np/search?q=${encodeURIComponent(query)}&channel=user&page=${initialPage}`;
await page.goto(url).catch((error) => {
throw new CommandExecutionError(`coupang search navigation failed: ${error?.message || error}`);
});
if (filter) {
const filterResult = await page.evaluate(buildApplyFilterEvaluate(filter)).catch((error) => {
throw new CommandExecutionError(`coupang search filter evaluation failed: ${error?.message || error}`);
});
if (!filterResult?.ok) {
throw new EmptyResultError('coupang search', `Filter "${filter}" was not available on the current page; try without --filter or wait for Coupang to render the filter bar.`);
}
await page.wait(3).catch((error) => {
throw new CommandExecutionError(`coupang search wait failed: ${error?.message || error}`);
});
if (pageNumber > 1) {
const locationInfo = await page.evaluate(buildCurrentLocationEvaluate()).catch((error) => {View on GitHub (pinned to 49907e53dc)
Solutions
- Use --filter rocket or omit --filter entirely.
- Run the command's help to see supported filters (currently: rocket).
- Normalize your input: the check is on the trimmed lowercase value, so avoid extra words or hyphenated variants.
- If you need another filter, apply it manually in the browser or file a feature request.
Example fix
// before opencli coupang search "ssd" --filter free-shipping // after opencli coupang search "ssd" --filter rocket
Defensive patterns
Strategy: validation
Validate before calling
const SUPPORTED_FILTERS = ['rocket'];
function validateFilter(filter) {
const f = String(filter ?? '').trim().toLowerCase();
if (f && !SUPPORTED_FILTERS.includes(f)) throw new Error(`Unsupported --filter "${f}" (supported: rocket)`);
return f;
} Type guard
function isValidFilter(f) { return typeof f === 'string' && ['rocket'].includes(f.trim().toLowerCase()); } Try / catch
try {
return await run('coupang search', { query, filter });
} catch (err) {
if (err?.code === 'ARGUMENT' && /Unsupported --filter/.test(err.message)) {
console.error('Only --filter rocket is supported; omit --filter for unfiltered search.');
process.exit(2);
}
throw err;
} Prevention
- Only pass --filter rocket (or omit it).
- Check the command help for the current list of supported filters.
- Normalize filter input (trim + lowercase) in wrapper scripts.
- Don't copy filter names from the Coupang web UI — the CLI supports a subset.
When it happens
Trigger: `opencli coupang search <query> --filter <value>` where value (after trim/lowercase) is anything besides 'rocket', e.g. --filter deals, --filter rocket-delivery, --filter free-shipping.
Common situations: Guessing filter names not in the help text; case/spacing mistakes (helps are trimmed+lowercased so 'Rocket' is fine, but 'rocket shipping' is not); copying filters from Coupang's UI that the CLI hasn't implemented; older docs referencing removed filters.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- query cannot be empty
- bbc topic "${args.topic}" is not supported
- bbc ${label} must be a positive integer
- bbc ${label} must be <= ${maxValue}
- ARGUMENT
AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29).
Data as JSON: /api/errors/d67e5b8b40c7b097.
Report an issue: GitHub.