

















@@ -45,6 +45,7 @@ describe("buildCliRespawnPlan", () => {
4545env: {},
4646execArgv: [],
4747autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
48+platform: "linux",
4849});
49505051const respawnPlan = expectCliRespawnPlan(plan);
@@ -63,6 +64,7 @@ describe("buildCliRespawnPlan", () => {
6364env: {},
6465execArgv: [],
6566autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
67+platform: "linux",
6668});
67696870const respawnPlan = expectCliRespawnPlan(plan);
@@ -80,6 +82,7 @@ describe("buildCliRespawnPlan", () => {
8082env: { [OPENCLAW_NODE_EXTRA_CA_CERTS_READY]: "1" },
8183execArgv: [],
8284autoNodeExtraCaCerts: undefined,
85+platform: "linux",
8386}),
8487).toBeNull();
8588});
@@ -90,6 +93,7 @@ describe("buildCliRespawnPlan", () => {
9093env: { NODE_EXTRA_CA_CERTS: "/custom/ca.pem" },
9194execArgv: [],
9295autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
96+platform: "linux",
9397});
94989599const respawnPlan = expectCliRespawnPlan(plan);
@@ -106,20 +110,83 @@ describe("buildCliRespawnPlan", () => {
106110},
107111execArgv: [EXPERIMENTAL_WARNING_FLAG],
108112autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
113+platform: "linux",
114+}),
115+).toBeNull();
116+});
117+118+it("adds a larger V8 stack size on Windows", () => {
119+const plan = buildCliRespawnPlan({
120+argv: [
121+"node",
122+"C:\\Users\\alice\\AppData\\Roaming\\npm\\node_modules\\openclaw\\openclaw.mjs",
123+"dashboard",
124+],
125+env: {},
126+execArgv: [],
127+autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
128+platform: "win32",
129+});
130+131+const respawnPlan = expectCliRespawnPlan(plan);
132+expect(respawnPlan.argv).toEqual([
133+"--stack-size=8192",
134+"C:\\Users\\alice\\AppData\\Roaming\\npm\\node_modules\\openclaw\\openclaw.mjs",
135+"dashboard",
136+]);
137+expect(respawnPlan.env.NODE_EXTRA_CA_CERTS).toBeUndefined();
138+expect(respawnPlan.env[OPENCLAW_NODE_EXTRA_CA_CERTS_READY]).toBeUndefined();
139+expect(respawnPlan.env[OPENCLAW_NODE_OPTIONS_READY]).toBeUndefined();
140+});
141+142+it("normalizes duplicated Windows node.exe argv before respawning", () => {
143+const scriptPath =
144+"C:\\Users\\alice\\AppData\\Roaming\\npm\\node_modules\\openclaw\\openclaw.mjs";
145+const plan = buildCliRespawnPlan({
146+argv: [
147+"C:\\Program Files\\nodejs\\node.exe",
148+"C:\\Program Files\\nodejs\\node.exe",
149+scriptPath,
150+"node.exe",
151+"dashboard",
152+"--no-open",
153+],
154+env: {},
155+execArgv: [],
156+execPath: "C:\\Program Files\\nodejs\\node.exe",
157+platform: "win32",
158+});
159+160+const respawnPlan = expectCliRespawnPlan(plan);
161+expect(respawnPlan.argv).toEqual(["--stack-size=8192", scriptPath, "dashboard", "--no-open"]);
162+});
163+164+it("does not respawn on Windows when stack size is already configured", () => {
165+expect(
166+buildCliRespawnPlan({
167+argv: [
168+"node",
169+"C:\\Users\\alice\\AppData\\Roaming\\npm\\node_modules\\openclaw\\openclaw.mjs",
170+"dashboard",
171+],
172+env: {},
173+execArgv: ["--stack-size=16384"],
174+autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
175+platform: "win32",
109176}),
110177).toBeNull();
111178});
112179113-it("does not respawn on Windows", () => {
180+it("does not respawn on Windows when underscore stack size spelling is already configured", () => {
114181expect(
115182buildCliRespawnPlan({
116183argv: [
117184"node",
118185"C:\\Users\\alice\\AppData\\Roaming\\npm\\node_modules\\openclaw\\openclaw.mjs",
119-"onboard",
186+"dashboard",
120187],
121188env: {},
122-execArgv: [],
189+execArgv: ["--stack_size=16384"],
123190autoNodeExtraCaCerts: "/etc/ssl/certs/ca-certificates.crt",
124191platform: "win32",
125192}),
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。