fix: inheriting NODE_OPTIONS on macOS with integrated terminal (#204682)
parent
249a9514f2
commit
cfb7370855
|
@ -31,5 +31,9 @@ fi
|
||||||
CONTENTS="$APP_PATH/Contents"
|
CONTENTS="$APP_PATH/Contents"
|
||||||
ELECTRON="$CONTENTS/MacOS/Electron"
|
ELECTRON="$CONTENTS/MacOS/Electron"
|
||||||
CLI="$CONTENTS/Resources/app/out/cli.js"
|
CLI="$CONTENTS/Resources/app/out/cli.js"
|
||||||
|
export VSCODE_NODE_OPTIONS=$NODE_OPTIONS
|
||||||
|
export VSCODE_NODE_REPL_EXTERNAL_MODULE=$NODE_REPL_EXTERNAL_MODULE
|
||||||
|
unset NODE_OPTIONS
|
||||||
|
unset NODE_REPL_EXTERNAL_MODULE
|
||||||
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"
|
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"
|
||||||
exit $?
|
exit $?
|
||||||
|
|
|
@ -13,7 +13,7 @@ import { IWorkspaceContextService, IWorkspaceFolder } from 'vs/platform/workspac
|
||||||
import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver';
|
import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver';
|
||||||
import { sanitizeProcessEnvironment } from 'vs/base/common/processes';
|
import { sanitizeProcessEnvironment } from 'vs/base/common/processes';
|
||||||
import { IShellLaunchConfig, ITerminalBackend, ITerminalEnvironment, TerminalShellType, WindowsShellType } from 'vs/platform/terminal/common/terminal';
|
import { IShellLaunchConfig, ITerminalBackend, ITerminalEnvironment, TerminalShellType, WindowsShellType } from 'vs/platform/terminal/common/terminal';
|
||||||
import { IProcessEnvironment, isWindows, language, OperatingSystem } from 'vs/base/common/platform';
|
import { IProcessEnvironment, isWindows, isMacintosh, language, OperatingSystem } from 'vs/base/common/platform';
|
||||||
import { escapeNonWindowsPath, sanitizeCwd } from 'vs/platform/terminal/common/terminalEnvironment';
|
import { escapeNonWindowsPath, sanitizeCwd } from 'vs/platform/terminal/common/terminalEnvironment';
|
||||||
import { isString } from 'vs/base/common/types';
|
import { isString } from 'vs/base/common/types';
|
||||||
import { IHistoryService } from 'vs/workbench/services/history/common/history';
|
import { IHistoryService } from 'vs/workbench/services/history/common/history';
|
||||||
|
@ -269,6 +269,26 @@ export async function createTerminalEnvironment(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Workaround for https://github.com/microsoft/vscode/issues/204005
|
||||||
|
// We should restore the following environment variables when a user
|
||||||
|
// launches the application using the CLI so that integrated terminal
|
||||||
|
// can still inherit these variables.
|
||||||
|
// We are not bypassing the restrictions implied in https://github.com/electron/electron/pull/40770
|
||||||
|
// since this only affects integrated terminal and not the application itself.
|
||||||
|
if (isMacintosh) {
|
||||||
|
// Restore NODE_OPTIONS if it was set
|
||||||
|
if (env['VSCODE_NODE_OPTIONS']) {
|
||||||
|
env['NODE_OPTIONS'] = env['VSCODE_NODE_OPTIONS'];
|
||||||
|
delete env['VSCODE_NODE_OPTIONS'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// Restore NODE_REPL_EXTERNAL_MODULE if it was set
|
||||||
|
if (env['VSCODE_NODE_REPL_EXTERNAL_MODULE']) {
|
||||||
|
env['NODE_REPL_EXTERNAL_MODULE'] = env['VSCODE_NODE_REPL_EXTERNAL_MODULE'];
|
||||||
|
delete env['VSCODE_NODE_REPL_EXTERNAL_MODULE'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Sanitize the environment, removing any undesirable VS Code and Electron environment
|
// Sanitize the environment, removing any undesirable VS Code and Electron environment
|
||||||
// variables
|
// variables
|
||||||
sanitizeProcessEnvironment(env, 'VSCODE_IPC_HOOK_CLI');
|
sanitizeProcessEnvironment(env, 'VSCODE_IPC_HOOK_CLI');
|
||||||
|
|
Loading…
Reference in New Issue