@echo off REM Save original codepage for /f "tokens=2 delims=:" %%a in ('chcp') do set OLDCP=%%a chcp 65001 >nul 2>&1 REM n8n Chinese Version Quick Start Script (Windows) REM Author: xiaoqi REM Last Update: 2025-09-09 REM Compatibility: Windows 7/8/10/11 setlocal enabledelayedexpansion REM Display banner :show_banner echo ====================================== echo n8n Chinese Version Launcher echo Version: n8n-1.109.2 with CN echo Maintainer: xiaoqi echo ====================================== echo. REM Parse command line arguments set "DEV_MODE=" set "FORCE_BUILD=" set "CHECK_ONLY=" set "SKIP_DEPS=" set "USE_NPM=" set "CUSTOM_PORT=5678" :parse_args if "%~1"=="" goto main_execution if /I "%~1"=="-h" goto show_help if /I "%~1"=="--help" goto show_help if /I "%~1"=="-d" ( set "DEV_MODE=true" shift goto parse_args ) if /I "%~1"=="--dev" ( set "DEV_MODE=true" shift goto parse_args ) if /I "%~1"=="-b" ( set "FORCE_BUILD=true" shift goto parse_args ) if /I "%~1"=="--build" ( set "FORCE_BUILD=true" shift goto parse_args ) if /I "%~1"=="-c" ( set "CHECK_ONLY=true" shift goto parse_args ) if /I "%~1"=="--check" ( set "CHECK_ONLY=true" shift goto parse_args ) if /I "%~1"=="--skip-deps" ( set "SKIP_DEPS=true" shift goto parse_args ) if /I "%~1"=="--npm" ( set "USE_NPM=true" shift goto parse_args ) if /I "%~1"=="-p" ( set "CUSTOM_PORT=%~2" shift shift goto parse_args ) if /I "%~1"=="--port" ( set "CUSTOM_PORT=%~2" shift shift goto parse_args ) echo [ERROR] Unknown option: %~1 goto show_help :main_execution REM Check OS version call :check_os_version REM Check and change to correct directory call :check_and_change_directory if errorlevel 1 goto error_exit REM Check dependencies if not defined SKIP_DEPS ( echo [INFO] Checking system dependencies... call :check_dependencies if errorlevel 1 goto error_exit ) REM Check port call :check_port if errorlevel 1 goto error_exit REM Stop existing processes call :stop_existing REM Setup environment call :setup_environment REM Check only mode if defined CHECK_ONLY ( echo [SUCCESS] System check completed goto end ) REM Install dependencies if needed if not exist "node_modules\" ( echo [INFO] Installing dependencies... if defined USE_NPM ( call :install_with_npm ) else ( call :install_with_pnpm ) if errorlevel 1 goto error_exit ) REM Check and install run-script-os if not exist "node_modules\run-script-os" ( echo [FIX] Installing run-script-os... call npm install run-script-os ) REM Build or check build if defined FORCE_BUILD ( echo [INFO] Force rebuilding project... call :build_project if errorlevel 1 goto error_exit ) else ( call :check_build if errorlevel 1 goto error_exit ) REM Dev mode or normal start if defined DEV_MODE ( echo [INFO] Starting n8n in development mode... echo [WARNING] Dev mode takes longer to start... if defined USE_NPM ( call npm run dev ) else ( call pnpm dev ) ) else ( call :start_n8n ) goto end REM ========== Functions ========== :check_os_version ver | findstr /i "5\.1\." >nul if not errorlevel 1 ( echo [WARNING] Windows XP detected ) ver | findstr /i "6\.0\." >nul if not errorlevel 1 ( echo [INFO] Windows Vista detected ) ver | findstr /i "6\.1\." >nul if not errorlevel 1 ( echo [INFO] Windows 7 detected ) ver | findstr /i "6\.2\." >nul if not errorlevel 1 ( echo [INFO] Windows 8 detected ) ver | findstr /i "6\.3\." >nul if not errorlevel 1 ( echo [INFO] Windows 8.1 detected ) ver | findstr /i "10\.0\." >nul if not errorlevel 1 ( echo [INFO] Windows 10/11 detected ) exit /b 0 :check_and_change_directory if exist "package.json" if exist "packages" ( echo [INFO] Already in n8n project directory exit /b 0 ) set "SCRIPT_DIR=%~dp0" if "%SCRIPT_DIR:~-1%"=="\" set "SCRIPT_DIR=%SCRIPT_DIR:~0,-1%" echo %SCRIPT_DIR% | findstr /I /C:"n8n-n8n-1.109.2" >nul if not errorlevel 1 ( echo [INFO] Switching to n8n project directory cd /d "%SCRIPT_DIR%" 2>nul if errorlevel 1 ( cd "%SCRIPT_DIR%" 2>nul if errorlevel 1 ( echo [ERROR] Cannot change to directory: %SCRIPT_DIR% exit /b 1 ) ) echo [SUCCESS] Changed to correct n8n project directory exit /b 0 ) if exist "n8n-n8n-1.109.2\" ( cd n8n-n8n-1.109.2 ) else if exist "..\n8n-n8n-1.109.2\" ( cd ..\n8n-n8n-1.109.2 ) else if exist "..\..\n8n-n8n-1.109.2\" ( cd ..\..\n8n-n8n-1.109.2 ) else ( echo [ERROR] n8n-n8n-1.109.2 directory not found echo [INFO] Please run this script from the correct project directory exit /b 1 ) if not exist "package.json" ( echo [ERROR] Invalid directory structure, missing package.json exit /b 1 ) if not exist "packages" ( echo [ERROR] Invalid directory structure, missing packages directory exit /b 1 ) echo [SUCCESS] Changed to correct n8n project directory exit /b 0 :check_dependencies where node >nul 2>&1 if errorlevel 1 ( if exist "C:\Program Files\nodejs\node.exe" ( set "PATH=C:\Program Files\nodejs;%PATH%" ) else if exist "C:\Program Files (x86)\nodejs\node.exe" ( set "PATH=C:\Program Files (x86)\nodejs;%PATH%" ) else ( echo [ERROR] Node.js not installed or not in PATH echo [INFO] Please visit https://nodejs.org to download and install exit /b 1 ) ) echo [INFO] Node.js version: node --version if not defined USE_NPM ( where pnpm >nul 2>&1 if errorlevel 1 ( echo [WARNING] pnpm not installed, trying npm set "USE_NPM=true" ) else ( echo [INFO] Using pnpm as package manager ) ) else ( echo [INFO] Using npm as package manager ) echo [SUCCESS] Dependencies check passed exit /b 0 :install_with_pnpm echo [INFO] Installing dependencies with pnpm... where pnpm >nul 2>&1 if errorlevel 1 ( echo [INFO] Installing pnpm... call npm install -g pnpm@8 if errorlevel 1 ( echo [ERROR] pnpm installation failed exit /b 1 ) ) call pnpm install --no-frozen-lockfile exit /b %errorlevel% :install_with_npm echo [WARNING] Using npm install echo [INFO] Recommend installing pnpm: npm install -g pnpm call npm install --legacy-peer-deps exit /b %errorlevel% :check_port echo [INFO] Checking port %CUSTOM_PORT% availability... netstat -ano 2>nul | findstr ":%CUSTOM_PORT%" >nul 2>&1 if not errorlevel 1 ( echo [WARNING] Port %CUSTOM_PORT% is already in use echo [INFO] Checking process using the port... netstat -ano | findstr ":%CUSTOM_PORT%" echo. set /p "kill_process=Terminate the process? (y/N): " if /I "!kill_process!"=="y" ( echo [INFO] Terminating process... for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%CUSTOM_PORT%"') do ( taskkill /PID %%a /F >nul 2>&1 if errorlevel 1 ( tskill %%a >nul 2>&1 ) ) echo [SUCCESS] Process terminated timeout /t 2 /nobreak >nul 2>&1 if errorlevel 1 ( ping -n 3 127.0.0.1 >nul ) ) else ( echo [ERROR] Cannot start n8n, port is in use exit /b 1 ) ) exit /b 0 :stop_existing echo [INFO] Stopping existing n8n processes... taskkill /F /IM node.exe /FI "WINDOWTITLE eq *n8n*" >nul 2>&1 taskkill /F /IM node.exe /FI "WINDOWTITLE eq *pnpm*" >nul 2>&1 taskkill /F /IM node.exe /FI "WINDOWTITLE eq *npm*" >nul 2>&1 timeout /t 2 /nobreak >nul 2>&1 if errorlevel 1 ( ping -n 3 127.0.0.1 >nul ) echo [SUCCESS] Existing processes stopped exit /b 0 :setup_environment echo [INFO] Setting environment variables... set "N8N_PORT=%CUSTOM_PORT%" set "N8N_DEFAULT_LOCALE=zh-CN" set "N8N_SECURE_COOKIE=false" set "DB_SQLITE_POOL_SIZE=5" set "N8N_RUNNERS_ENABLED=true" set "N8N_BLOCK_ENV_ACCESS_IN_NODE=false" set "NODE_OPTIONS=--max-old-space-size=4096" echo [SUCCESS] Environment variables set echo - N8N_PORT=%CUSTOM_PORT% echo - N8N_DEFAULT_LOCALE=zh-CN echo - N8N_SECURE_COOKIE=false echo - DB_SQLITE_POOL_SIZE=5 echo - NODE_OPTIONS=--max-old-space-size=4096 exit /b 0 :check_build if not exist "packages\cli\dist\" goto need_build if not exist "packages\core\dist\" goto need_build if not exist "packages\workflow\dist\" goto need_build exit /b 0 :need_build echo [WARNING] Project needs to be built set /p "build_project=Build project now? This may take a few minutes (y/N): " if /I "!build_project!"=="y" ( call :build_project ) exit /b 0 :build_project echo [INFO] Building project... if defined USE_NPM ( call npm run build > build.log 2>&1 ) else ( call pnpm build > build.log 2>&1 ) if errorlevel 1 ( echo [ERROR] Build failed, check build.log type build.log | more exit /b 1 ) echo [SUCCESS] Project built successfully exit /b 0 :start_n8n echo [INFO] Starting n8n Chinese version... set "DATETIME=%date:~0,4%%date:~5,2%%date:~8,2%-%time:~0,2%%time:~3,2%" set "DATETIME=%DATETIME: =0%" set "DATETIME=%DATETIME:/=%" set "DATETIME=%DATETIME:\=%" set "LOG_FILE=n8n-%DATETIME%.log" echo [INFO] Starting n8n service... echo [INFO] Log file: %LOG_FILE% if defined USE_NPM ( start "n8n Server" /B cmd /c "npm start > %LOG_FILE% 2>&1" ) else ( start "n8n Server" /B cmd /c "pnpm start > %LOG_FILE% 2>&1" ) echo Waiting for n8n to start set "count=0" :wait_loop set /a count+=1 if %count% gtr 60 goto start_failed netstat -an 2>nul | findstr ":%CUSTOM_PORT%" | findstr "LISTENING" >nul 2>&1 if not errorlevel 1 goto start_success set /p "=." nul 2>&1 if errorlevel 1 ( ping -n 2 127.0.0.1 >nul ) goto wait_loop :start_success echo. echo [SUCCESS] n8n started successfully! echo. echo ========== START INFO ========== echo Access URL: http://localhost:%CUSTOM_PORT% echo Interface Language: Chinese (zh-CN) echo Log file: %LOG_FILE% echo ================================= echo. echo [INFO] Use Ctrl+C to stop service echo [TIP] First visit requires account setup echo. pause exit /b 0 :start_failed echo. echo [ERROR] n8n failed to start echo [INFO] Check log file: %LOG_FILE% if exist "%LOG_FILE%" ( echo. echo ===== ERROR LOG ===== type "%LOG_FILE%" | more ) echo. echo [INFO] Trying alternative start method... call npx n8n if errorlevel 1 ( echo [ERROR] Alternative method also failed echo. echo Please try: echo 1. Run: npm install run-script-os echo 2. Run: node packages/cli/bin/n8n ) pause exit /b 1 :show_help echo Usage: %~nx0 [options] echo. echo Options: echo -h, --help Show this help echo -d, --dev Start in development mode echo -b, --build Force rebuild project echo -c, --check Only check system status echo -p, --port Specify port (default: 5678) echo --skip-deps Skip dependency check echo --npm Use npm instead of pnpm echo. echo Examples: echo %~nx0 # Normal start (port 5678) echo %~nx0 -p 8080 # Use port 8080 echo %~nx0 -d # Development mode echo %~nx0 -b # Rebuild and start echo %~nx0 --npm # Use npm echo %~nx0 -p 3000 -d # Dev mode on port 3000 echo. echo Troubleshooting: echo 1. If pnpm install fails, use --npm option echo 2. If port is in use, script will prompt to terminate process echo 3. Check build.log when build fails echo. goto end :error_exit echo [ERROR] Script execution failed echo. echo Common solutions: echo 1. Ensure Node.js version is 18.x or 20.x echo 2. Try running with administrator privileges echo 3. Use --npm option if pnpm has issues echo 4. Check network connection and proxy settings echo. pause exit /b 1 :end REM Restore original codepage if defined OLDCP ( chcp %OLDCP% >nul 2>&1 ) endlocal exit /b 0