yarnpkg/yarn · error · MessageError

noName

Error message

noName

What it means

`yarn pack` builds a tarball of the current package and derives the filename from `pkg.name` (pack.js:190). It reads the root manifest and requires a `name`; a package.json with no `name` throws noName at pack.js:185 before any packing logic runs.

Source

Thrown at src/cli/commands/pack.js:185

export function setFlags(commander: Object) {
  commander.description('Creates a compressed gzip archive of package dependencies.');
  commander.option('-f, --filename <filename>', 'filename');
}

export function hasWrapper(commander: Object, args: Array<string>): boolean {
  return true;
}

export async function run(
  config: Config,
  reporter: Reporter,
  flags: {filename?: string},
  args?: Array<string>,
): Promise<void> {
  const pkg = await config.readRootManifest();
  if (!pkg.name) {
    throw new MessageError(reporter.lang('noName'));
  }
  if (!pkg.version) {
    throw new MessageError(reporter.lang('noVersion'));
  }

  const normaliseScope = name => (name[0] === '@' ? name.substr(1).replace('/', '-') : name);
  const filename = flags.filename || path.join(config.cwd, `${normaliseScope(pkg.name)}-v${pkg.version}.tgz`);

  await config.executeLifecycleScript('prepack');

  const stream = await pack(config);

  await new Promise((resolve, reject) => {
    stream.pipe(fs2.createWriteStream(filename));
    stream.on('error', reject);
    stream.on('close', resolve);
  });

View on GitHub (pinned to c2dda503f3)

Solutions

  1. Add a valid `name` to package.json.
  2. Confirm you are running `yarn pack` from the package directory that owns the manifest you intend to pack.
  3. Run `node -p "require('./package.json').name"` to verify the field resolves.

Example fix

// before — package.json
{
  "version": "1.0.0"
}
// after
{
  "name": "mylib",
  "version": "1.0.0"
}
Defensive patterns

Strategy: validation

Validate before calling

const pkg = require('./package.json');
if (!pkg.name) {
  throw new Error('Cannot pack: package.json has no "name".');
}

Type guard

function isNamed(pkg) {
  return typeof pkg === 'object' && pkg !== null && typeof pkg.name === 'string' && pkg.name.length > 0;
}

Try / catch

try {
  await runYarn(['pack']);
} catch (e) {
  if (/noName/.test(e.message)) {
    console.error('Add a "name" to package.json before packing.');
    return;
  }
  throw e;
}

Prevention

When it happens

Trigger: Running `yarn pack` in a directory whose package.json omits the `name` field (e.g., a config-only or scaffold project).

Common situations: Generating a tarball for local testing before `name` was set; workspace root manifest without a name; accidental deletion of the field.

Related errors


AI-assisted analysis of yarnpkg/yarn@c2dda503f3 (2026-08-13). Data as JSON: /api/errors/ce5a016d5e4f5a06. Report an issue: GitHub.