{"record":{"id":"f10dca40a2d64de5","repo":"denoland/deno","slug":"remote-deno-json-files-are-not-supported","errorCode":null,"errorMessage":"remote deno.json files are not supported","messagePattern":"remote deno\\.json files are not supported","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/tools/pm/deps.rs","lineNumber":695,"sourceCode":"      npm_resolver,\n      npm_version_resolver,\n      progress_bar,\n      permissions_container,\n      main_module_graph_container,\n      lockfile,\n      pending_changes: Vec::new(),\n    }\n  }\n\n  pub fn from_workspace_dir(\n    workspace_dir: &Arc<WorkspaceDirectory>,\n    dep_filter: impl DepFilter,\n    args: DepManagerArgs,\n  ) -> Result<Self, AnyError> {\n    let mut deps = Vec::with_capacity(256);\n    if let Some(deno_json) = workspace_dir.member_deno_json() {\n      if deno_json.specifier.scheme() != \"file\" {\n        bail!(\"remote deno.json files are not supported\");\n      }\n      let path = deno_json.specifier.to_file_path().unwrap();\n      if path.parent().unwrap() == workspace_dir.dir_path() {\n        add_deps_from_deno_json(deno_json, dep_filter, &mut deps);\n      }\n    }\n    if let Some(package_json) = workspace_dir.member_pkg_json() {\n      add_deps_from_package_json(package_json, dep_filter, &mut deps);\n    }\n    // Catalogs are a workspace-root concept, so only include them when running\n    // in the root directory (the recursive path handles them via the workspace).\n    if workspace_dir.dir_path() == workspace_dir.workspace.root_dir_path() {\n      add_deps_from_catalogs(&workspace_dir.workspace, dep_filter, &mut deps);\n    }\n\n    Ok(Self::with_deps_args(deps, args))\n  }\n","sourceCodeStart":677,"sourceCodeEnd":713,"githubUrl":"https://github.com/denoland/deno/blob/9ad36f7a2cce60488e6ec52283efb32efddaf93a/cli/tools/pm/deps.rs#L677-L713","documentation":"The dependency manager (deno add/remove/install/outsider updates) builds its view from `from_workspace_dir` and requires the member deno.json to be a local `file:` URL. A deno.json loaded over http(s) cannot be discovered/edited on disk, so the operation refuses up front.","triggerScenarios":"Running `deno add`/`deno remove`/`deno install` with a remote config, e.g. `deno install --config https://example.com/deno.json`, or in a context where the workspace's member config specifier has an http/https scheme.","commonSituations":"Shared team configs served over HTTP; experimental setups pointing --config at a URL; proxies or tooling that inject remote deno.json.","solutions":["Download the remote deno.json to the project and point --config at the local file.","If only parts are remote, inline the needed pieces (imports/dependencies) into a local deno.json.","Re-run the dependency command from the directory with the local config."],"exampleFix":"# before\ndeno install --config https://example.com/deno.json\n# after\ncurl -o deno.json https://example.com/deno.json\ndeno install --config ./deno.json","handlingStrategy":"validation","validationCode":"import { isAbsolute } from \"node:path\";\nconst configArg = process.argv.find((a) => a.startsWith(\"--config=\"))?.slice(9);\nif (configArg?.startsWith(\"http://\") || configArg?.startsWith(\"https://\")) {\n  console.error(\"dependency commands need a local deno.json; download the config first\");\n  process.exit(1);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep deno.json local; dependency-mutating commands edit it on disk.","If sharing config across teams, distribute it via a template repo, not a URL.","Pin --config to a relative path inside the project."],"tags":["deno-json","config","remote","http"],"backgroundTag":"remote-config-unsupported","analyzedSha":"9ad36f7a2cce60488e6ec52283efb32efddaf93a","analyzedAt":"2026-08-20T13:07:44.778Z","schemaVersion":2},"datasetVersion":"2026-08-31T09:17:48.483Z"}