Molunerfinn/PicGo · warning
Failed to read local plugin readme
Error message
Failed to read local plugin readme
What it means
fetchPluginReadme calls the GET_INSTALLED_PLUGIN_README RPC; if the response envelope has success:false it throws 'Failed to read local plugin readme' (or result.error if the main process supplied one). The main side could not read the plugin's README file, typically because the plugin directory or readme is missing.
Source
Thrown at src/renderer/adapters/plugins.ts:109
},
async saveTransformer (transformer: string) {
await saveConfig({
'picBed.transformer': transformer
})
},
async fetchPluginReadme (fullName: string, options?: { installed?: boolean }) {
// For installed plugins (including locally imported ones not on npm),
// read README from disk via the main process — jsdelivr 404s on
// unpublished plugins. Non-installed plugins (e.g. search results) fall
// back to the CDN.
if (options?.installed) {
const result = await invokeRPC<string>(
IRPCActionType.GET_INSTALLED_PLUGIN_README,
fullName
)
if (!result.success) {
throw new Error(result.error || 'Failed to read local plugin readme')
}
return result.data ?? ''
}
let lastError: unknown = null
for (const readmeFileName of README_FILE_CANDIDATES) {
try {
const response = await axios.get<string>(
`https://cdn.jsdelivr.net/npm/${fullName}/${readmeFileName}`,
{
responseType: 'text'
}
)
return response.data || ''
} catch (error) {View on GitHub (pinned to 07ec7068a5)
Solutions
- Check result.error/logs for the main-process read failure path (ENOENT vs permissions)
- Reinstall the plugin to restore its README and directory contents
- Verify the plugin's install path exists and README.md is readable
- Fall back to the npm registry readme for the package when the local file is absent
Example fix
// before
const readme = await fetchPluginReadme(fullName) // throws if local README missing
// after
let readme = ''
try {
readme = await fetchPluginReadme(fullName)
} catch {
readme = await fetchReadmeFromNpm(fullName)
} Defensive patterns
Strategy: fallback
Validate before calling
const readmePath = path.join(pluginDir(fullName), 'README.md')
if (!(await fs.pathExists(readmePath))) {
return fetchReadmeFromNpm(fullName)
} Try / catch
try {
readme = await fetchPluginReadme(fullName)
} catch {
readme = await fetchReadmeFromNpm(fullName).catch(() => '')
} Prevention
- Render an empty/readme-missing state instead of failing the panel
- Verify the plugin directory and README exist after install
- Prefer the npm registry readme as a source of truth for published packages
When it happens
Trigger: Requesting the readme for a fullName whose installed plugin folder lacks README.md (or is unreadable), or when the RPC handler fails and returns success:false with no error message.
Common situations: Plugin installed from a package without a README; plugin folder partially deleted or corrupted node_modules; permission issues on the plugin directory; requesting a plugin that was uninstalled in another window.
Related errors
- Failed to refresh plugin config schema
- Install plugin failed
- Toggle plugin failed
- Update plugin failed
- Uninstall plugin failed
AI-assisted analysis of Molunerfinn/PicGo@07ec7068a5 (2026-08-30).
Data as JSON: /api/errors/4656995fa09ca67d.
Report an issue: GitHub.