# 绕过 UI Pro 的 License 验证 (Windows 11 兼容版) set -euo pipefail # 1. 禁用 module.mjs 的调用 MODULE="node_modules/@nuxt/ui-pro/dist/module.mjs" if [[ -f $MODULE ]]; then # Windows 兼容的 sed 命令 sed -i.bak 's/await validateLicense({.*rootDir })/\/\/ await validateLicense({...rootDir })/g' "$MODULE" if [[ -f "$MODULE.bak" ]]; then rm -f "$MODULE.bak" fi echo "✅ module.mjs 已屏蔽" fi # 2. 直接"替换函数" fake 200 SHARED="node_modules/@nuxt/ui-pro/dist/shared" JS=$(find "$SHARED" -maxdepth 1 -name 'ui-pro.*.mjs' | head -n1) [[ -z $JS || ! -f $JS ]] && { echo "⚠️ ui-pro.*.mjs 未找到"; exit 0; } # 创建临时文件 cat <<'EOF' > tmp_func.mjs async function validateLicense(opts) { /* --- patched --- */ return { status: 200 } } EOF # Windows 兼容的 sed 命令 - 使用更简单的方法 # 先备份原文件 cp "$JS" "$JS.backup" # 使用 PowerShell 或 Node.js 来处理文件替换 if command -v node >/dev/null 2>&1; then # 使用 Node.js 脚本进行替换 cat > tmp_replace.js <<'EOF' const fs = require('fs'); const path = process.argv[2]; if (!fs.existsSync(path)) { console.error('File not found:', path); process.exit(1); } let content = fs.readFileSync(path, 'utf8'); // 替换 validateLicense 函数 const newFunction = `async function validateLicense(opts) { /* --- patched --- */ return { status: 200 } }`; // 使用正则表达式匹配并替换整个函数 const functionRegex = /async function validateLicense\s*\([^)]*\)\s*\{[\s\S]*?\}/; if (functionRegex.test(content)) { content = content.replace(functionRegex, newFunction); fs.writeFileSync(path, content, 'utf8'); console.log('✅ Function replaced successfully'); } else { console.log('⚠️ validateLicense function not found, skipping...'); } EOF node tmp_replace.js "$JS" rm -f tmp_replace.js else echo "⚠️ Node.js not found, using fallback method" # 简单的文本替换作为后备方案 sed -i.bak 's/async function validateLicense.*{.*return { status: 200 }.*}/async function validateLicense(opts) {\n \/* --- patched --- *\/\n return { status: 200 }\n}/g' "$JS" if [[ -f "$JS.bak" ]]; then rm -f "$JS.bak" fi fi rm -f tmp_func.mjs echo "✅ $JS 已 mock 完成" echo "�� License ⛔ Done!"