{"record":{"id":"4cc5bd515f3eba68","repo":"windmill-labs/windmill","slug":"could-not-read-file-fullfilepath","errorCode":null,"errorMessage":"Could not read file: ${fullFilePath}","messagePattern":"Could not read file: (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/src/commands/app/app_metadata.ts","lineNumber":947,"sourceCode":"    log.warn(\n      colors.yellow(\n        `Could not determine language for ${runnableId} (ext: ${ext})`\n      )\n    );\n    return undefined;\n  }\n\n  // Read the actual content from the file\n  const fullFilePath = path.join(\n    appFolder,\n    APP_BACKEND_FOLDER,\n    runnableFilePath\n  );\n  let content: string;\n  try {\n    content = await readTextFile(fullFilePath);\n  } catch {\n    log.warn(colors.yellow(`Could not read file: ${fullFilePath}`));\n    return undefined;\n  }\n\n  const remotePath = appFolder.replaceAll(SEP, \"/\");\n\n  try {\n    const schemaResult = await inferSchema(\n      language as ScriptLanguage,\n      content,\n      currentSchema,\n      `${remotePath}/${runnableId}`\n    );\n\n    log.info(colors.green(`  Inferred schema for ${runnableId}`));\n    return {\n      runnableId: runnableId,\n      schema: schemaResult.schema,\n    };","sourceCodeStart":929,"sourceCodeEnd":965,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/cli/src/commands/app/app_metadata.ts#L929-L965","documentation":"File-I/O failure in inferRunnableSchemaFromFile: readTextFile threw on the runnable's code file under the app backend folder (missing file, permissions, or encoding problem). The function warns and returns undefined — the runnable is skipped rather than aborting schema inference for the whole app.","triggerScenarios":"Thrown at cli/src/commands/app/app_metadata.ts:947 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the file path recorded in the runnable YAML actually exists on disk","Restore file permissions so the CLI user can read it","Re-create the app checkout or re-pull so backend files are present"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}