diff --git a/doc/api/cli.md b/doc/api/cli.md index fcb846002aeaad..283d5b96df26f7 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -1345,6 +1345,15 @@ added: Path to a Node.js module which will be loaded in place of the built-in REPL. Overriding this value to an empty string (`''`) will use the built-in REPL. +### `NODE_SKIP_PLATFORM_CHECK=value` +<!-- YAML +added: REPLACEME +--> + +If `value` equals `'1'`, the check for a supported platform is skipped during +Node.js startup. Node.js might not execute correctly. Any issues encountered +on unsupported platforms will not be fixed. + ### `NODE_TLS_REJECT_UNAUTHORIZED=value` If `value` equals `'0'`, certificate validation is disabled for TLS connections. diff --git a/doc/node.1 b/doc/node.1 index 278061424c07c6..3af77ca2355030 100644 --- a/doc/node.1 +++ b/doc/node.1 @@ -565,6 +565,13 @@ The default path is which is overridden by this variable. Setting the value to an empty string ("" or " ") will disable persistent REPL history. . +.It Ev NODE_SKIP_PLATFORM_CHECK +When set to +.Ar 1 , +the check for a supported platform is skipped during Node.js startup. +Node.js might not execute correctly. +Any issues encountered on unsupported platforms will not be fixed. +. .It Ev NODE_TLS_REJECT_UNAUTHORIZED When set to .Ar 0 , diff --git a/src/node_main.cc b/src/node_main.cc index 00f3f2a4836818..9f4ea22d12c6e8 100644 --- a/src/node_main.cc +++ b/src/node_main.cc @@ -27,13 +27,25 @@ #include <VersionHelpers.h> #include <WinError.h> +#define SKIP_CHECK_VAR "NODE_SKIP_PLATFORM_CHECK" +#define SKIP_CHECK_SIZE 1 +#define SKIP_CHECK_VALUE "1" + int wmain(int argc, wchar_t* wargv[]) { // Windows Server 2012 (not R2) is supported until 10/10/2023, so we allow it // to run in the experimental support tier. + char buf[SKIP_CHECK_SIZE + 1]; if (!IsWindows8Point1OrGreater() && - !(IsWindowsServer() && IsWindows8OrGreater())) { - fprintf(stderr, "This application is only supported on Windows 8.1, " - "Windows Server 2012 R2, or higher."); + !(IsWindowsServer() && IsWindows8OrGreater()) && + (GetEnvironmentVariableA(SKIP_CHECK_VAR, buf, sizeof(buf)) != + SKIP_CHECK_SIZE || + strncmp(buf, SKIP_CHECK_VALUE, SKIP_CHECK_SIZE + 1) != 0)) { + fprintf(stderr, "Node.js is only supported on Windows 8.1, Windows " + "Server 2012 R2, or higher.\n" + "Setting the " SKIP_CHECK_VAR " environment variable " + "to 1 skips this\ncheck, but Node.js might not execute " + "correctly. Any issues encountered on\nunsupported " + "platforms will not be fixed."); exit(ERROR_EXE_MACHINE_TYPE_MISMATCH); }