{"record":{"id":"2a5ac2bca5bf610c","repo":"puppetlabs/puppet","slug":"the-value-for-the-key-dependencies-in-the-file-met","errorCode":null,"errorMessage":"The value for the key dependencies in the file metadata.json of the module #{name} must be an array, not: '#{value}'","messagePattern":"The value for the key dependencies in the file metadata\\.json of the module #(.+?) must be an array, not: '#(.+?)'","errorType":"exception","errorClass":"MissingMetadata","httpStatus":null,"severity":"error","filePath":"lib/puppet/module.rb","lineNumber":257,"sourceCode":"    end\n    {}\n  end\n\n  def load_metadata\n    return if instance_variable_defined?(:@metadata)\n\n    @metadata = data = read_metadata\n    return if data.empty?\n\n    @forge_name = data['name'].tr('-', '/') if data['name']\n\n    [:source, :author, :version, :license, :dependencies].each do |attr|\n      value = data[attr.to_s]\n      raise MissingMetadata, \"No #{attr} module metadata provided for #{name}\" if value.nil?\n\n      if attr == :dependencies\n        unless value.is_a?(Array)\n          raise MissingMetadata, \"The value for the key dependencies in the file metadata.json of the module #{name} must be an array, not: '#{value}'\"\n        end\n\n        value.each do |dep|\n          name = dep['name']\n          dep['name'] = name.tr('-', '/') unless name.nil?\n          dep['version_requirement'] ||= '>= 0.0.0'\n        end\n      end\n\n      send(attr.to_s + \"=\", value)\n    end\n  end\n\n  # Return the list of manifests matching the given glob pattern,\n  # defaulting to 'init.pp' for empty modules.\n  def match_manifests(rest)\n    if rest\n      wanted_manifests = wanted_manifests_from(rest)","sourceCodeStart":239,"sourceCodeEnd":275,"githubUrl":"https://github.com/puppetlabs/puppet/blob/e227c27540975c25aa22d533a52424a9d2fc886a/lib/puppet/module.rb#L239-L275","documentation":"In the same load_metadata pass, the `dependencies` value must be an Array; anything else (String, Hash) raises Puppet::Module::MissingMetadata with the offending value interpolated (lib/puppet/module.rb:257). Each array entry is then normalized: 'name' has dashes converted to slashes and a missing 'version_requirement' defaults to '>= 0.0.0'. Even a single dependency must be wrapped in an array.","triggerScenarios":"\"dependencies\": \"puppetlabs/stdlib\" (a string); \"dependencies\": {\"puppetlabs/stdlib\": \">= 4.0.0\"} (a mapping); metadata converted from older YAML-era dependency formats.","commonSituations":"Hand-authored metadata modeling one dependency as a scalar; mapping-style dependency lists; editors or generators autocompleting the wrong shape.","solutions":["Rewrite dependencies as an array of objects: [{\"name\": \"puppetlabs/stdlib\", \"version_requirement\": \">= 9.0.0\"}]","version_requirement may be omitted (defaults to '>= 0.0.0'); name may use dash or slash form (dashes are normalized to slashes)","Run `pdk validate` or metadata-json-lint before shipping the module"],"exampleFix":"// before (metadata.json)\n\"dependencies\": \"puppetlabs/stdlib\"\n\n// after\n\"dependencies\": [\n  {\n    \"name\": \"puppetlabs/stdlib\",\n    \"version_requirement\": \">= 9.0.0\"\n  }\n]","handlingStrategy":"try-catch","validationCode":"data = Puppet::Util::Json.load(File.read('metadata.json'))\nraise ArgumentError, 'dependencies must be an Array' unless data['dependencies'].is_a?(Array)","typeGuard":null,"tryCatchPattern":"begin\n  mod = Puppet::Module.find(name, environment)\n  mod.load_metadata if mod\nrescue Puppet::Module::MissingMetadata => e\n  Puppet.warning(\"module #{name}: #{e.message}\")\n  next\nend","preventionTips":["Model dependencies as an array of objects, even for a single dependency","Include 'name' per entry; 'version_requirement' defaults to '>= 0.0.0' when omitted","Run pdk validate / metadata-json-lint in CI to catch shape errors before install"],"tags":["puppet","module","metadata","type-mismatch"],"backgroundTag":"metadata-type-mismatch","analyzedSha":"e227c27540975c25aa22d533a52424a9d2fc886a","analyzedAt":"2026-08-21T20:49:46.650Z","schemaVersion":2},"datasetVersion":"2026-08-21T23:17:16.201Z"}