laurent22/joplin · error · Error

No text editor is defined. Please set it using `config edito

Error message

No text editor is defined. Please set it using `config editor <editor-path>`

What it means

The 'edit' command needs an external text editor to open the note. It resolves the editor path by checking Setting.value('editor') first, then process.env.EDITOR; if both are unset it throws 'No text editor is defined'. The message is i18n-translated.

Source

Thrown at packages/app-cli/app/command-edit.ts:30

	public override usage() {
		return 'edit <note>';
	}

	public override description() {
		return _('Edit note.');
	}

	public override async action(args: { note: string }) {
		let tempFilePath: string|null = null;

		const onFinishedEditing = async () => {
			if (tempFilePath) fs.removeSync(tempFilePath);
		};

		const textEditorPath = () => {
			if (Setting.value('editor')) return Setting.value('editor');
			if (process.env.EDITOR) return process.env.EDITOR;
			throw new Error(_('No text editor is defined. Please set it using `config editor <editor-path>`'));
		};

		try {
			// -------------------------------------------------------------------------
			// Load note or create it if it doesn't exist
			// -------------------------------------------------------------------------

			const title = args['note'];

			if (!app().currentFolder()) throw new Error(_('No active notebook.'));
			let note = await app().loadItem(ModelType.Note, title);

			this.encryptionCheck(note);

			if (!note) {
				const ok = await this.prompt(_('Note does not exist: "%s". Create it?', title));
				if (!ok) return;
				note = await Note.save({ title: title, parent_id: app().currentFolder().id });

View on GitHub (pinned to 2654b33620)

Solutions

  1. Configure the editor in Joplin: 'config editor <editor-path>' (e.g. 'config editor vim').
  2. Export EDITOR in your shell (e.g. 'export EDITOR=nano') and relaunch.
  3. Ensure the configured binary is installed and on PATH.
  4. Use an absolute path to the editor if it is not on PATH.

Example fix

# before
#   joplin edit "my note"   # throws: no editor
# after
#   joplin config editor /usr/bin/nano
#   joplin edit "my note"
Defensive patterns

Strategy: validation

Validate before calling

const editor = Setting.value('editor') || process.env.EDITOR;
if (!editor) {
  throw new Error('Set an editor first: `config editor <path>` or export EDITOR=<path>`');
}

Prevention

When it happens

Trigger: Running 'edit <note>' (or creating a note via edit) when no editor is configured in Joplin settings and the EDITOR environment variable is not set.

Common situations: First use on a machine with no EDITOR in the environment; settings reset; a headless/container environment with no editor installed.

Related errors


AI-assisted analysis of laurent22/joplin@2654b33620 (2026-08-12). Data as JSON: /api/errors/380b50a8a19743a3. Report an issue: GitHub.