<<< return to main page
[TOC] according to SillyTavern docs you cannot install SillyTavern on Windows 7 because *it does not support NodeJS 18.16* ![image failed to load](./img/g_ST_on_Win7/intro_ST_docs.png) let me tell you - {{{S-inline-highlight-red this is a bucking lie /S}}} in this guide we will install NodeJS 20.0.2 on windows 7, and successfully launch the latest SillyTavern # NodeJS Windows 7 support * **NodeJS v13.6.0** - [the very last version that was tested on Windows 7](https://github.com/nodejs/node/issues/33000#issuecomment-617753749). this version can be installed via MSI installer * **NodeJS v13.7.0 - v.13.14.0** - can be installed and used on Windows 7 as well but they were never properly tested on Windows 7 (still work fine!) * starting with **NodeJS v14.0.0** - the installation of NodeJs on Windows 7 is no longer available because developers [forcefully blocked installation](https://github.com/nodejs/node/pull/31954) due to "[muh Microsoft no longer supports it](./img/g_ST_on_Win7/updooter.png)". when runtime detects Windows 7 it refuses to work * **NodeJS v14.5.0** - [added a flag](https://github.com/nodejs/node/pull/33176) `NODE_SKIP_PLATFORM_CHECK` that allows to skip forced OS check, and nodeJS can be **used** on Windows 7 (thank you, community for the started shitstorm!) * ...but it didn't fix the issue with MSI installer itself! when installing NodeJS via MSI user would get the error message below. but installation via ZIP works fine ```xml This application is only supported on Windows 8.1, Windows Server 2012 R2, or higher ``` ![image failed to load](./img/g_ST_on_Win7/error_on_install.png) * **NodeJS v20.3.0** - no longer runs on Windows 7 whether `NODE_SKIP_PLATFORM_CHECK` flag or not. it just shows the error below. in theory it can be fixed by [patching kernel](https://github.com/kernel-extenders/nt61) or by [loading extra DLL](https://github.com/i486/VxKex/) but that's outside of this guide scope ```xml The procedure entry point GetSystemTimePreciseAsFileTime could not be located in the dynamic link library KERNEL32.dll. ``` ![image failed to load](./img/g_ST_on_Win7/error_on_install2.png) !!!info so this means **the last version of NodeJS that can be installed in Windows 7 without headache - v20.2.0** (afaik) # install NodeJS on Windows 7 ## uninstall and clean first of all, if you already tried to install NodeJS on Windows 7 yourself then you *probably* installed it wrong and made a complete mess. before going further, let's clean up and fix possible issues. if you never installed NodeJS before then you may skip this section 1) **delete NodeJS** go to `Program and Features` -> find Node.js -> uninstall it ![image failed to load](./img/g_ST_on_Win7/clean_deleteNode1.png) it would be better if you used tools like [Bulk Crap Uninstaller](https://github.com/Klocman/Bulk-Crap-Uninstaller) which can clean up garbage files afterwards, but you do you! ![image failed to load](./img/g_ST_on_Win7/clean_deleteNode2.png) 2) **delete the following folders**: ```xml C:\Program Files\nodejs C:\Users\%your_profile_name%\AppData\Local\npm-cache C:\Users\%your_profile_name%\AppData\npm C:\Users\%your_profile_name%\AppData\npm-cache ``` they may contain leftovers and cache, that can mess with new NodeJS install ## download and install NodeJS 1) download [NodeJS v20.2.0](https://nodejs.org/download/release/v20.2.0/node-v20.2.0-win-x64.zip) !!!info you need to download **ZIP** (or **7Z**) package and **NOT MSI installer** 2) unpack the archive into the folder ```xml C:\Program Files\nodejs ``` ![image failed to load](./img/g_ST_on_Win7/unpack_overview.png) 3) the most important part! open **command-line**: START -> search `cmd` -> right click -> `run as administrator` use the following two commands in command-line one by one: ```typescript setx NODE_SKIP_PLATFORM_CHECK 1 setx PATH "C:\Program Files\nodejs;%PATH%" ``` ![image failed to load](./img/g_ST_on_Win7/unpack_cmd_flag.png) first will let NodeJS to be run on Windows 7 (will skip warning message that your system is outdated) second will register both NodeJS and NPM into OS if you get the error message ```xml Node.js is only supported on Windows 8.1, Windows Server 2012 R2, or higher. Setting the NODE_SKIP_PLATFORM_CHECK environment variable to 1 skips this check, but Node.js might not execute correctly. Any issues encountered on unsupported platforms will not be fixed. ``` ![image failed to load](./img/g_ST_on_Win7/error_on_flag.png) then you didn't set `NODE_SKIP_PLATFORM_CHECK` flag (see above) ## verify 1) **close** command-line, and launch it again 2) use the following two commands: ```properties node -v npm -v ``` they both check the installed NodeJS and NPM versions. commands must return: ```properties node = v20.2.0 npm = v9.6.6 ``` ![image failed to load](./img/g_ST_on_Win7/unpack_cmd_verify_version.png) if so then congratulations! you have installed NodeJS on Windows 7! # installing SillyTavern on Windows 7 ## download and install ST now lets install SillyTavern itself 1) go to release page and [download ZIP version of latest SillyTavern](https://github.com/SillyTavern/SillyTavern/releases/latest) click on button `Source code (zip)` below ![image failed to load](./img/g_ST_on_Win7/ST_zip_download.png) 2) unpack ZIP archive anywhere you want and click on `start.bat` file ![image failed to load](./img/g_ST_on_Win7/ST_bat_start.png) 3) if you did everything right then you will get the error message: ```properties code: 'ERR_SYSTEM_ERROR', info: { errno: -4054, code: 'ENOSYS', message: 'function not implemented', syscall: 'uv_os_gethostname' }, errno: [Getter/Setter], syscall: [Getter/Setter] ``` ![image failed to load](./img/g_ST_on_Win7/error_uv_os_gethostname.png) {{{S-inline-highlight-red do not worry! we will fix it soon /S}}} this error message means that SillyTavern's inner libraries cannot detect what OS you are using: *the libraries use API (commands) that are not available in Windows 7* hence SillyTavern cannot detect OS on start. the are two well-known possible fixes... ## fix for uv_os_gethostname №1 you can install a small tool - **[VxKex](https://github.com/i486/VxKex/)** - that injects into software which doesn't work correctly on Windows 7. it injects extra API and libraries for backward compatibility 1) download [VxKex](https://github.com/i486/VxKex/releases/latest) and install it 2) navigate to where you unpacked NodeJS: ``` C:\Program Files\nodejs ``` 3) right-click on `node.exe` -> Properties -> VxKex tab -> `Enable VxKex for this program` -> Apply ![image failed to load](./img/g_ST_on_Win7/gethostname_fix1_VxKex.png) 4) try to launch SillyTavern now (`start.bat`). it should work fine the downside to this method is that it may be an overkill for one small problem ![image failed to load](./img/g_ST_on_Win7/works.png) ## fix for uv_os_gethostname №2 if you don't want to use [VxKex](#fix_for_uv_os_gethostname_1) then your other option is **[hostname-patcher](https://github.com/Bellisario/hostname-patcher)** this library can be 'installed' into any NodeJS-based software to patch the `uv_os_gethostname` error 1) open `cmd` (look above), and run the following command in command-line: ```properties npm install hostname-patcher ``` ![image failed to load](./img/g_ST_on_Win7/gethostname_fix2_cmd.png) this will install hostname-patcher globally on your machine, so you will be able to easily add it anywhere you want. !!!info **very important** please **use this command twice**: - first install it, when CMD is launched **with** administrative rights - second time, when CMD is launched **without** administrative rights why? because your Windows account might be into whether *Administrators group* or *Users group* so we must install in two different ways to cover both cases 2) now go SillyTavern folder and open file `server.js` 3) find this line at the start of the file: ```javascript #!/usr/bin/env node ``` right after that line, add two more lines and save your changes: ```javascript require('hostname-patcher'); const os = require('os'); ``` for SillyTavern 1.12.7+ you must use different command: ```javascript import hostnamePatcher from 'hostname-patcher'; import os from 'os'; ``` in default Nodepad it will look like this: ![image failed to load](./img/g_ST_on_Win7/gethostname_fix2_notepad1.png) ...but honestly? [install Notepad++](https://notepad-plus-plus.org/downloads/) and use it instead, far better than default Notepad ![image failed to load](./img/g_ST_on_Win7/gethostname_fix2_notepad2.png) ![image failed to load](./img/g_ST_on_Win7/import_notepad.png) 4) try launching SillyTavern again (`start.bat`). it should work fine the downside to this method is that if you update SillyTavern, you will need to redo steps (2-3) 5) if you have the following error message: ```powershell Error: Cannot find module 'hostname-patcher' Require stack: at Module._load (node:internal/modules/cjs/loader:923:27 at Module.require (node: internal/modules/cjs/loader:1137:19) at require (node:internal/modules/helpers:121:18> at Module._compile (node: internal/modules/cjs/loader:1255:14) at Module_extensions..js (node: internal/modules/cjs/loader:1309:10) at Module.load (node: internal/modules/cjs/loader: 1113:32) Module._load (node:internal/modules/cjs/loader: 960:12> at at Function.executeUserEntry Point [as runMain] in:83:12 ) { code: 'MODULE_NOT_FOUND', requireStack: } ``` ![image failed to load](./img/g_ST_on_Win7/gethostname_fix2_error.png) then read warning above about installing with both administrative and non-administrative rights 6) if you have the following error message: ```powershell > ReferenceError: require is not defined in ES module scope, you can use import instead This file is being treated as an ES module because it has a '.js' file extension and '...\SillyTavern-1.12.7\package.json' contains "type": "module". To treat it as a CommonJ5 script, rename it to use the '.cjs' file extension. at file:.../SillyTavern-1.12.7/server.js:3:1 at ModuleJob.run (node:internal/modules/esm/module_job:192:25) ``` ![image failed to load](./img/g_ST_on_Win7/import_error.png) then use `import` command instead of `require` *** congrats! you have successfully installed NodeJS 20.2.0 on Windows 7, and you have made it work with SillyTavern! wasn't too hard, right?