diff --git a/packages/host/src/patch.ts b/packages/host/src/patch.ts index 05497637..c0047667 100644 --- a/packages/host/src/patch.ts +++ b/packages/host/src/patch.ts @@ -77,9 +77,16 @@ export class SaveModule { static async fromSave(json: Static, root: JSZip) { const module = new this(lib.ModuleInfo.fromJSON(json)); - module.files = new Map( - await Promise.all(json.files.map(async f => [f, await root.file(f)!.async("nodebuffer")] as const)) - ); + module.files = new Map(await Promise.all(json.files + .map(filename => ({filename, file: root.file(filename)})) + .filter(({filename, file}) => { + if (file === null) { + lib.logger.warn(`Missing file ${filename} in save`); + } + return file !== null; + }) + .map(async ({filename, file}) => [filename, await file!.async("nodebuffer")] as const) + )); return module; } @@ -395,8 +402,11 @@ export async function patch(savePath: string, modules: SaveModule[]) { } } else { for (let module of patchInfo.modules) { - for (let file of module.files.keys()) { - zip.remove(root.file(file)!.name); + for (let filepath of module.files.keys()) { + const file = root.file(filepath); + if (file !== null) { + zip.remove(file.name); + } } } patchInfo.modules = [];