File size: 2,271 Bytes
			
			| eb9ca51 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | const { spawn } = require("child_process");
const { resolve } = require("path");
const { existsSync, mkdirSync, writeFileSync } = require("fs");
const http = require("http");
async function setup() {
	// Wait up to 30s for it to start
	let success = false;
	let child;
	for (let i = 0; i < 30; i++) {
		try {
			await new Promise((res, rej) => {
				http
					.get("http://127.0.0.1:8188/object_info", (resp) => {
						let data = "";
						resp.on("data", (chunk) => {
							data += chunk;
						});
						resp.on("end", () => {
							// Modify the response data to add some checkpoints
							const objectInfo = JSON.parse(data);
							objectInfo.CheckpointLoaderSimple.input.required.ckpt_name[0] = ["model1.safetensors", "model2.ckpt"];
							objectInfo.VAELoader.input.required.vae_name[0] = ["vae1.safetensors", "vae2.ckpt"];
							data = JSON.stringify(objectInfo, undefined, "\t");
							const outDir = resolve("./data");
							if (!existsSync(outDir)) {
								mkdirSync(outDir);
							}
							const outPath = resolve(outDir, "object_info.json");
							console.log(`Writing ${Object.keys(objectInfo).length} nodes to ${outPath}`);
							writeFileSync(outPath, data, {
								encoding: "utf8",
							});
							res();
						});
					})
					.on("error", rej);
			});
			success = true;
			break;
		} catch (error) {
			console.log(i + "/30", error);
			if (i === 0) {
				// Start the server on first iteration if it fails to connect
				console.log("Starting ComfyUI server...");
				let python = resolve("../../python_embeded/python.exe");
				let args;
				let cwd;
				if (existsSync(python)) {
					args = ["-s", "ComfyUI/main.py"];
					cwd = "../..";
				} else {
					python = "python";
					args = ["main.py"];
					cwd = "..";
				}
				args.push("--cpu");
				console.log(python, ...args);
				child = spawn(python, args, { cwd });
				child.on("error", (err) => {
					console.log(`Server error (${err})`);
					i = 30;
				});
				child.on("exit", (code) => {
					if (!success) {
						console.log(`Server exited (${code})`);
						i = 30;
					}
				});
			}
			await new Promise((r) => {
				setTimeout(r, 1000);
			});
		}
	}
	child?.kill();
	if (!success) {
		throw new Error("Waiting for server failed...");
	}
}
 setup(); | 
