From f6b82d5e9ff4ee5a9e2188536b9d6dcf57d3c893 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Tue, 25 Oct 2016 16:36:02 -0700 Subject: [PATCH] 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 --- src/server/server.ts | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/server/server.ts b/src/server/server.ts index 4bab628f9a5..5057a13dbd1 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -14,21 +14,33 @@ namespace ts.server { } = require("child_process"); const os: { - homedir(): string + homedir?(): string; + tmpdir(): string; } = require("os"); - function getGlobalTypingsCacheLocation() { let basePath: string; switch (process.platform) { case "win32": - basePath = process.env.LOCALAPPDATA || process.env.APPDATA || os.homedir(); + basePath = process.env.LOCALAPPDATA || + process.env.APPDATA || + (os.homedir && os.homedir()) || + process.env.USERPROFILE || + (process.env.HOMEDRIVE && process.env.HOMEPATH && normalizeSlashes(process.env.HOMEDRIVE + process.env.HOMEPATH)) || + os.tmpdir(); break; case "linux": - basePath = os.homedir(); + basePath = (os.homedir && os.homedir()) || + process.env.HOME || + ((process.env.LOGNAME || process.env.USER) && `/home/${process.env.LOGNAME || process.env.USER}`) || + os.tmpdir(); break; case "darwin": - basePath = combinePaths(os.homedir(), "Library/Application Support/"); + const homeDir = (os.homedir && os.homedir()) || + process.env.HOME || + ((process.env.LOGNAME || process.env.USER) && `/Users/${process.env.LOGNAME || process.env.USER}`) || + os.tmpdir(); + basePath = combinePaths(homeDir, "Library/Application Support/"); break; }