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
- Add a valid `name` to package.json.
- Confirm you are running `yarn pack` from the package directory that owns the manifest you intend to pack.
- 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
- Set `name` at project init.
- Run a manifest sanity check (`name` present) before any pack/publish step.
- Keep pack/publish out of branches where package.json is mid-edit.
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.