fix: 修复启动脚本路径检测问题

详细说明:
- 改进了路径检测逻辑,支持从任意位置运行脚本
- 添加了智能目录切换功能,自动定位 n8n 项目目录
- 支持脚本在 n8n-n8n-1.109.2 目录内和外部调用
- 验证目录结构确保在正确的项目根目录执行命令
- 修复了之前构建失败的 package.json 找不到问题

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Yep_Q
2025-09-08 08:22:54 +08:00
parent b7062e15cd
commit 3a0abe4579

View File

@@ -36,7 +36,7 @@ show_banner() {
echo "======================================"
echo " n8n 中文版快速启动脚本"
echo " 版本: n8n-1.109.2 with 中文翻译"
echo " 维护者: 小齐"
echo " 维护者: xiaoqi"
echo "======================================"
echo -e "${NC}"
}
@@ -204,6 +204,58 @@ show_help() {
echo
}
# 检查并切换到正确目录
check_and_change_directory() {
local current_dir="$(pwd)"
local script_path="$(readlink -f "$0" 2>/dev/null || realpath "$0" 2>/dev/null || echo "$0")"
local script_dir="$(dirname "$script_path")"
local n8n_dir=""
# 如果当前目录已经是 n8n 项目目录
if [[ -f "package.json" && -d "packages" ]]; then
print_info "检测到当前已在 n8n 项目目录"
return 0
fi
# 如果脚本在 n8n-n8n-1.109.2 目录内,则使用脚本所在目录
if [[ "$script_dir" == *"n8n-n8n-1.109.2"* ]]; then
print_info "切换到脚本所在的 n8n 项目目录: $script_dir"
cd "$script_dir" || {
print_error "无法切换到目录: $script_dir"
exit 1
}
print_success "已切换到正确的 n8n 项目目录"
return 0
fi
# 尝试找到 n8n-n8n-1.109.2 目录
if [ -d "./n8n-n8n-1.109.2" ]; then
n8n_dir="./n8n-n8n-1.109.2"
elif [ -d "../n8n-n8n-1.109.2" ]; then
n8n_dir="../n8n-n8n-1.109.2"
elif [ -d "../../n8n-n8n-1.109.2" ]; then
n8n_dir="../../n8n-n8n-1.109.2"
else
print_error "未找到 n8n-n8n-1.109.2 目录"
print_info "请确保在正确的项目目录下运行此脚本"
exit 1
fi
print_info "切换到 n8n 项目目录: $n8n_dir"
cd "$n8n_dir" || {
print_error "无法切换到目录: $n8n_dir"
exit 1
}
# 验证目录结构
if [ ! -f "package.json" ] || [ ! -d "packages" ]; then
print_error "目录结构不正确,缺少 package.json 或 packages 目录"
exit 1
fi
print_success "已切换到正确的 n8n 项目目录"
}
# 主函数
main() {
# 解析命令行参数
@@ -236,6 +288,9 @@ main() {
# 显示横幅
show_banner
# 检查并切换到正确目录
check_and_change_directory
# 检查依赖
check_dependencies