{"record":{"id":"a7f6fc1c10b5abfc","repo":"apify/crawlee","slug":"the-requestmanager-option-cannot-be-used-in-conj","errorCode":null,"errorMessage":"The `requestManager` option cannot be used in conjunction with `requestList` and/or `requestQueue`","messagePattern":"The `requestManager` option cannot be used in conjunction with `requestList` and/or `requestQueue`","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/basic-crawler/src/internals/basic-crawler.ts","lineNumber":1088,"sourceCode":"        }\n\n        try {\n            serviceLocatorScope.enterScope();\n            this.#contextPipelineOptions = {\n                contextPipelineBuilder: parsedOptions.contextPipelineBuilder,\n                extendContext: parsedOptions.extendContext,\n            };\n\n            this.#log = serviceLocator.getLogger().child({ prefix: this.constructor.name });\n\n            // Initialize the Configuration instance to avoid lazy loading in the components\n            serviceLocator.getConfiguration();\n\n            const instanceIndex = BasicCrawler.instanceCount++;\n            this.#identity = { instanceIndex, hasExplicitId: id !== undefined, id: id ?? String(instanceIndex) };\n\n            if (requestManager !== undefined && (requestList !== undefined || requestQueue !== undefined)) {\n                throw new Error(\n                    'The `requestManager` option cannot be used in conjunction with `requestList` and/or `requestQueue`',\n                );\n            }\n\n            const suppliedManager = requestManager ?? requestQueue;\n\n            // Offered before building a pacer of our own: anything that paces takes the floor - through any\n            // number of wrappers, since they all forward - so no domain ends up with two clocks.\n            const floorTaken =\n                sameDomainDelaySecs > 0 &&\n                (suppliedManager?.recordPacingSignal({\n                    reason: 'minIntervalEverywhere',\n                    intervalMs: sameDomainDelaySecs * 1000,\n                    // What `sameDomainDelaySecs` has always meant: one clock per site, subdomains included.\n                    scope: 'registrableDomain',\n                }) ??\n                    false);\n","sourceCodeStart":1070,"sourceCodeEnd":1106,"githubUrl":"https://github.com/apify/crawlee/blob/dbe57fb09ca607ad59dcf998f3925ef9ac3bb26c/packages/basic-crawler/src/internals/basic-crawler.ts#L1070-L1106","documentation":"BasicCrawler expects exactly one request source. The newer `requestManager` option and the legacy `requestList`/`requestQueue` options are mutually exclusive because the constructor would not know which provider owns the crawl. Supplying both aborts construction immediately.","triggerScenarios":"Calling `new BasicCrawler({ requestManager, requestQueue })` or `new BasicCrawler({ requestManager, requestList })` — any combination of requestManager with requestList and/or requestQueue.","commonSituations":"Refactoring old code from requestQueue to the unified requestManager while keeping the original option; merging two crawler configs into one.","solutions":["Remove `requestList`/`requestQueue` and keep only `requestManager`.","Or remove `requestManager` and keep only the legacy `requestList`/`requestQueue` option.","Wrap a legacy RequestList/RequestQueue in a request manager if you need the new API."],"exampleFix":"// before\nconst crawler = new BasicCrawler({ requestManager: manager, requestQueue: queue });\n// after\nconst crawler = new BasicCrawler({ requestManager: manager });","handlingStrategy":"validation","validationCode":"const sources = [opts.requestManager, opts.requestList, opts.requestQueue].filter(Boolean);\nif (sources.length > 1) {\n  throw new Error('Provide only one of requestManager, requestList, requestQueue.');\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Standardize on `requestManager` in new code and remove legacy requestList/requestQueue options.","Centralize crawler construction in one factory function that picks a single source.","Never copy old crawler configs wholesale when migrating APIs."],"tags":["configuration","request-queue","invalid-options"],"backgroundTag":"conflicting-options","analyzedSha":"dbe57fb09ca607ad59dcf998f3925ef9ac3bb26c","analyzedAt":"2026-08-30T22:22:28.328Z","schemaVersion":2},"datasetVersion":"2026-08-30T23:17:21.991Z"}