Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,8 @@
"esbuild": "0.28.1",
"lodash": "4.18.1",
"ws": "8.21.0",
"tmp": "0.2.7"
"tmp": "0.2.7",
"yauzl": "^3.3.1"
Comment thread
Astro-Han marked this conversation as resolved.
Resolved
},
"patchedDependencies": {}
}
29 changes: 1 addition & 28 deletions script/check-node.mjs
Original file line number Diff line number Diff line change
@@ -1,34 +1,7 @@
const unsupportedMajor = 25
const version = process.version
const match = /^v?(\d+)(?:\.|$)/.exec(version)

let errorMessage = ""

if (!match) {
errorMessage = `Unsupported Node version format: ${version}. Use Node 24 for PawWork dependency installs.`
}

if (match && Number(match[1]) >= unsupportedMajor) {
errorMessage = [
"Use Node 24 for PawWork dependency installs.",
"",
`Current node: ${version}`,
"",
"Node 25+ can make Electron 40.8.0 postinstall leave an incomplete Electron.app while reporting success.",
"Switch to Node 24 (see .node-version), delete node_modules, then reinstall dependencies.",
"",
"macOS/Linux:",
" rm -rf node_modules",
"",
"PowerShell:",
" Remove-Item -Recurse -Force node_modules",
"",
"Then reinstall:",
" bun install --frozen-lockfile",
].join("\n")
}

if (errorMessage) {
console.error(errorMessage)
console.error(`Unsupported Node version format: ${version}.`)
process.exit(1)
}
18 changes: 6 additions & 12 deletions script/check-node.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,15 @@ function runGuard(version) {
)
}

test("rejects Node 25+ with reinstall guidance", () => {
const result = runGuard("v25.0.0")
test("allows Node 24", () => {
const result = runGuard("v24.14.0")

expect(result.status).toBe(1)
expect(result.stderr).toContain("Current node: v25.0.0")
expect(result.stderr).toContain("Node 24")
expect(result.stderr).toContain(".node-version")
expect(result.stderr).toContain("delete node_modules")
expect(result.stderr).toContain("rm -rf node_modules")
expect(result.stderr).toContain("Remove-Item -Recurse -Force node_modules")
expect(result.stderr).toContain("bun install --frozen-lockfile")
expect(result.status).toBe(0)
expect(result.stderr).toBe("")
})

test("allows Node 24", () => {
const result = runGuard("v24.14.0")
test("allows Node 26", () => {
const result = runGuard("v26.3.0")

expect(result.status).toBe(0)
expect(result.stderr).toBe("")
Expand Down
Loading