From 3c2513be146bde40a22d2a992f1ce21adf35dadf Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Tue, 25 Oct 2016 16:07:55 -0700 Subject: [PATCH 1/2] add a fallback logic for older versions of node that don't support 'homedir' --- 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 0ce647e37520a..43562fd44c4a2 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 = process.env.HOME || + (os.homedir && os.homedir()) || + ((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 = process.env.HOME || + (os.homedir && os.homedir()) || + ((process.env.LOGNAME || process.env.USER) && `/Users/${process.env.LOGNAME || process.env.USER}`) || + os.tmpdir(); + basePath = combinePaths(homeDir, "Library/Application Support/"); break; } From 59549f1e396949a80cded27335500a009ac9fa47 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Tue, 25 Oct 2016 16:24:40 -0700 Subject: [PATCH 2/2] try os.homedir first --- src/server/server.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/server/server.ts b/src/server/server.ts index 43562fd44c4a2..89a427c7e9411 100644 --- a/src/server/server.ts +++ b/src/server/server.ts @@ -30,14 +30,14 @@ namespace ts.server { os.tmpdir(); break; case "linux": - basePath = process.env.HOME || - (os.homedir && 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": - const homeDir = process.env.HOME || - (os.homedir && os.homedir()) || + 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/");