{"record":{"id":"8f5d276a2ad5be68","repo":"parcel-bundler/parcel","slug":"entry-entry-does-not-exist","errorCode":null,"errorMessage":"Entry ${entry} does not exist","messagePattern":"Entry (.+?) does not exist","errorType":"exception","errorClass":"ThrowableDiagnostic","httpStatus":null,"severity":"error","filePath":"packages/core/core/src/requests/EntryRequest.js","lineNumber":166,"sourceCode":"      },\n    });\n  }\n}\n\nexport class EntryResolver {\n  options: ParcelOptions;\n\n  constructor(options: ParcelOptions) {\n    this.options = options;\n  }\n\n  async resolveEntry(entry: FilePath): Promise<EntryRequestResult> {\n    let stat;\n    try {\n      stat = await this.options.inputFS.stat(entry);\n    } catch (err) {\n      if (!isGlob(entry)) {\n        throw new ThrowableDiagnostic({\n          diagnostic: {\n            message: md`Entry ${entry} does not exist`,\n          },\n        });\n      }\n      let files = await glob(entry, this.options.inputFS, {\n        absolute: true,\n        onlyFiles: false,\n      });\n      let results = await Promise.all(\n        files.map(f => this.resolveEntry(path.normalize(f))),\n      );\n      return results.reduce(\n        (p, res) => ({\n          entries: p.entries.concat(res.entries),\n          files: p.files.concat(res.files),\n          globs: p.globs.concat(res.globs),\n        }),","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/parcel-bundler/parcel/blob/59484858a1a0bcbb71f74088956bb437a2db6505/packages/core/core/src/requests/EntryRequest.js#L148-L184","documentation":"Thrown by resolveEntry() when this.options.inputFS.stat(entry) rejects and the entry string is not a glob pattern. This is the top-level entry resolution failure — the entry passed on the CLI or in options does not exist and cannot be expanded as a glob.","triggerScenarios":"Called at the start of resolveEntry(entry). The stat() call for the literal entry path throws (ENOENT) and isGlob(entry) returns false, so the glob-expansion fallback is skipped and the error is thrown immediately.","commonSituations":"Typing a wrong entry path on the CLI (e.g., parcel src/indx.html); pointing at a file that was deleted or never committed; wrong working directory when running the parcel command; entry path has a typo or wrong extension.","solutions":["Verify the entry path exists: ls <entry>.","Check for typos in the entry filename or extension.","Ensure you are running parcel from the correct working directory.","If the entry is generated by a prior build step, run that step first.","Use a glob pattern (e.g., 'src/*.html') if you want Parcel to expand multiple possible entries."],"exampleFix":"// before\nparcel src/indx.html\n\n// after\nparcel src/index.html","handlingStrategy":"validation","validationCode":"const fs = require('fs');\nfunction validateEntryExists(entry) {\n  if (!fs.existsSync(entry)) {\n    throw new Error(`Entry does not exist: ${entry}`);\n  }\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Verify entry paths exist before running parcel, especially in CI scripts.","Use absolute paths or paths relative to a known root in build scripts.","Add a prebuild existence check for programmatically-generated entry paths."],"tags":["entry","file-not-found","cli","config"],"backgroundTag":null,"analyzedSha":"59484858a1a0bcbb71f74088956bb437a2db6505","analyzedAt":"2026-08-13T04:06:35.925Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}