usebruno/bruno · error · BrunoError
No files selected
Error message
No files selected
What it means
Entry guard in readMultipleFiles. Fires when the files argument is null/undefined or an empty array, before any file is read.
Source
Thrown at packages/bruno-app/src/utils/importers/file-reader.js:45
return new Promise((resolve, reject) => {
const fileReader = new FileReader();
fileReader.onload = (e) => {
try {
const parsed = JSON.parse(e.target.result);
resolve({ fileName: file.name, content: parsed });
} catch (err) {
console.error(err);
reject(new BrunoError(`Unable to parse JSON file: ${file.name}`));
}
};
fileReader.onerror = (err) => reject(err);
fileReader.readAsText(file);
});
};
export const readMultipleFiles = async (files) => {
if (!files || files.length === 0) {
throw new BrunoError('No files selected');
}
const parsedFiles = [];
for (const file of files) {
if (!file.name.toLowerCase().endsWith('.json')) {
throw new BrunoError(`Invalid file type: ${file.name}. Only JSON files are supported.`);
}
try {
const parsedFile = await readFile(file);
parsedFiles.push(parsedFile);
} catch (err) {
throw new BrunoError(`Failed to read ${file.name}: ${err.message}`);
}
}
return parsedFiles;View on GitHub (pinned to 9bdd81c7bd)
Solutions
- Disable the import button until at least one file is selected.
- Pass the actual FileList from the input element to readMultipleFiles.
- Add an early return when files?.length === 0 in the calling component.
Example fix
// before
const parsed = await readMultipleFiles(input.files);
// after
if (!input.files?.length) {
toast('Choose a file first');
return;
}
const parsed = await readMultipleFiles(Array.from(input.files)); Defensive patterns
Strategy: validation
Validate before calling
if (!files || files.length === 0) {
throw new Error('No files selected');
} Type guard
function hasSelectedFiles(files) {
return Array.isArray(files) && files.length > 0;
} Try / catch
try {
await readMultipleFiles(files);
} catch (err) {
if (err.message === 'No files selected') toast('Please choose at least one file');
throw err;
} Prevention
- Disable the import button until at least one file is chosen.
- Pass the actual FileList (Array.from) to readMultipleFiles.
- Add an early return in the UI when no files are selected.
When it happens
Trigger: readMultipleFiles(), readMultipleFiles(null), or readMultipleFiles([]). Typical when the file input change event fires with no selection or the caller forgets to pass the FileList.
Common situations: UI wiring bug where the import button is enabled before a file is chosen, or programmatic calls that pass an empty selection.
Related errors
- No files provided
- Invalid file type: ${file.name}. Only JSON files are support
- ZIP file does not exist
- Collection location does not exist
- Invalid environment: expected an object
AI-assisted analysis of usebruno/bruno@9bdd81c7bd (2026-08-13).
Data as JSON: /api/errors/25d218d102dc4ba4.
Report an issue: GitHub.