Skip to content

Commit f6b82d5

Browse files
authored
add a fallback logic for older versions of node that don't support 'homedir' (#11845)
* add a fallback logic for older versions of node that don't support 'homedir' * try os.homedir first
1 parent 1959154 commit f6b82d5

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

src/server/server.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,33 @@ namespace ts.server {
1414
} = require("child_process");
1515

1616
const os: {
17-
homedir(): string
17+
homedir?(): string;
18+
tmpdir(): string;
1819
} = require("os");
1920

20-
2121
function getGlobalTypingsCacheLocation() {
2222
let basePath: string;
2323
switch (process.platform) {
2424
case "win32":
25-
basePath = process.env.LOCALAPPDATA || process.env.APPDATA || os.homedir();
25+
basePath = process.env.LOCALAPPDATA ||
26+
process.env.APPDATA ||
27+
(os.homedir && os.homedir()) ||
28+
process.env.USERPROFILE ||
29+
(process.env.HOMEDRIVE && process.env.HOMEPATH && normalizeSlashes(process.env.HOMEDRIVE + process.env.HOMEPATH)) ||
30+
os.tmpdir();
2631
break;
2732
case "linux":
28-
basePath = os.homedir();
33+
basePath = (os.homedir && os.homedir()) ||
34+
process.env.HOME ||
35+
((process.env.LOGNAME || process.env.USER) && `/home/${process.env.LOGNAME || process.env.USER}`) ||
36+
os.tmpdir();
2937
break;
3038
case "darwin":
31-
basePath = combinePaths(os.homedir(), "Library/Application Support/");
39+
const homeDir = (os.homedir && os.homedir()) ||
40+
process.env.HOME ||
41+
((process.env.LOGNAME || process.env.USER) && `/Users/${process.env.LOGNAME || process.env.USER}`) ||
42+
os.tmpdir();
43+
basePath = combinePaths(homeDir, "Library/Application Support/");
3244
break;
3345
}
3446

0 commit comments

Comments
 (0)