From da00ba67ed1182ad334f7c713b8254fba174aeba Mon Sep 17 00:00:00 2001 From: Anton Gilgur Date: Thu, 12 May 2022 16:21:56 -0400 Subject: [PATCH] fix: getDefaultLibFilePath should normalize __dirname (#49051) - this currently causes a bug on Windows with mixed path separators - it returns a POSIX backslash path for __dirname, and then adds a forward slash from the directorySeparator, causing mixed separators - TS uses `/` internally and lets the host convert if needed, so I assume this should be normalized to all forward slashses instead - example of the bug from my tests: ``` Expected: "D:\\a\\rollup-plugin-typescript2\\rollup-plugin-typescript2\\node_modules\\typescript\\lib\\lib.d.ts" Received: "D:\\a\\rollup-plugin-typescript2\\rollup-plugin-typescript2\\node_modules\\typescript\\lib/lib.d.ts" ``` - every other use of __dirname in the codebase seems to be normalized except for this one - could use normalizeSlashes for this, but I figure combinePaths is more appropriate since that will handle it and combine properly as well without any `+ directorySeparator +` stuff --- src/services/services.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/services.ts b/src/services/services.ts index afb6a108691..9ac9cf35400 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -2880,7 +2880,7 @@ namespace ts { export function getDefaultLibFilePath(options: CompilerOptions): string { // Check __dirname is defined and that we are on a node.js system. if (typeof __dirname !== "undefined") { - return __dirname + directorySeparator + getDefaultLibFileName(options); + return combinePaths(__dirname, getDefaultLibFileName(options)); } throw new Error("getDefaultLibFilePath is only supported when consumed as a node module. ");