提问人:Jacob Wartofsky 提问时间:9/11/2023 更新时间:9/11/2023 访问量:20
退出后,Windows 错误代码为 0,并在 NodeJS 中出现错误
Windows error code is 0 after exiting with error in NodeJS
问:
我正在使用 Node 测试一个在 MacOS 和 Windows 上运行的应用程序。
如果我的程序退出时出现错误,则退出代码是在 MacOS 上设置的,而不是在 Windows 上设置的。在 PowerShell 中运行错误命令 $((0/0)) 并且没有找到 $LASTEXITCODE 或 $?已填充。我得到 $LASTEXITCODE=0 和 $?=True。除非在代码中明确设置,否则 Windows 是否只吞下退出代码?在 MacOS 上的“终端”中,退出代码设置为 1。
我应该在 Windows 上寻找不同的退出代码吗?
下面是触发此行为的测试的代码示例:
describe("runSubprocess", () => {
it("returns non-zero when subprocess fails", async () => {
const exitCode = await runSubprocess("echo", ["$((0/0))"]);
expect(exitCode).not.toEqual(0);
});
});
function runSubProcess(command: string, args: ReadonlyArray<string>) {
process.stdout.write("> " + command + " " + args.join(" ") + "\n");
const childProcess = spawn(command, args, {
stdio: ["inherit", "pipe", "pipe"],
shell: true,
});
return new Promise((resolveFunc) => {
childProcess.stdout.on("data", (x) => {
process.stdout.write(x.toString());
});
childProcess.stderr.on("data", (x) => {
process.stderr.write(x.toString());
});
childProcess.on("exit", (code) => {
resolveFunc(code);
});
});
}
已尝试在MacOS和Windows上运行此测试。它在 MacOS 上按预期工作。
我还尝试在 PowerShell 和终端中运行该命令。发生相同的行为。
答: 暂无答案
评论