fix(deploy): .env 中带空格的值未加引号导致 install.sh 以 127 失败
现象: ./deploy/.env: line 53: Miku.pmx: command not found [install] 第 53 行执行失败(退出码 127) 根因:deploy/.env.example 的 MODEL_CONVERT_PMX=Hatsune Miku.pmx 值含空格 却没加引号,install.sh 用 `set -a; . deploy/.env` 载入时被切成 「赋值 + 命令」,Miku.pmx 被当成命令执行。 修复: 1. 模板改为 MODEL_CONVERT_PMX="Hatsune Miku.pmx"(占位符值同样加引号); 2. 新增 deploy/env-lib.sh:.env 语法预检,install.sh / ctl.sh 在 source 之前检查,报错给出「哪一行 / 原文 / 改法」, 与反引号建议单引号; 3. install.sh 的 ERR trap 补上出错文件名(lineno 属于被 source 的 .env, 只报行号无法定位); 4. 新增 test/env-file.spec.ts 12 项回归测试,锁住「模板可被 shell 原样载入」; 5. 版本升到 0.2.1,README(.md/.txt)/DSH.md 补 .env 写法约定、FAQ 与测试数量。
This commit is contained in:
@@ -101,7 +101,7 @@ opendance-web/
|
||||
│ ├── admin/ # React 管理端
|
||||
│ │ ├── src/components/ModelReviewPanel.tsx # 模型审核面板 + 骨骼详细界面
|
||||
│ │ └── src/lib/bone-tree.ts # 骨骼树过滤(搜索保留祖先链)
|
||||
│ ├── test/ # 单元测试 + 端到端冒烟(10 文件 / 168 项)
|
||||
│ ├── test/ # 单元测试 + 端到端冒烟(11 文件 / 180 项)
|
||||
│ │ # mmd-vmd 31 / model-archive 24 / model-inspector 25
|
||||
│ │ # / model-thumbnail 8 / admin-bone-filter 8
|
||||
│ │ # / preprocess 25 / init-env 16 / admin-port 16
|
||||
@@ -111,6 +111,7 @@ opendance-web/
|
||||
│ # / import-default-model.mjs(默认模型导入 / 补写源码)
|
||||
├── deploy/ # ★ 业务服务部署(不含 MySQL、不含反代)
|
||||
│ ├── init-env.sh # ★ 首次启动的.env 交互引导(install.sh 缺.env 时调用)
|
||||
│ ├── env-lib.sh # ★ deploy/.env 语法预检(被 install.sh / ctl.sh 引用)
|
||||
│ ├── install.sh # 一键部署(systemd / OpenRC / SysVinit / 后台进程)
|
||||
│ ├── uninstall.sh
|
||||
│ ├── ctl.sh # 无 init 系统时的进程控制
|
||||
@@ -333,12 +334,18 @@ POST /api/models ─┬─.glb /.vrm /.gltf ─▶ importModelFile() 直接导
|
||||
T-pose 角色图;真实 10MB VRM(83 关节、5307 顶点)单张耗时 60-121ms(中位 79ms)。
|
||||
- 管理端 3D 预览放开到 `vrm/glb/gltf`(`fbx` 仍提示"仅归档,请先转换为 GLB/VRM");
|
||||
列表页显示 40px 缩略图。
|
||||
- 测试:`npx vitest run` -> **10 个文件 / 168 项通过**
|
||||
- 测试:`npx vitest run` -> **11 个文件 / 180 项通过**
|
||||
(`model-inspector` 25、`model-thumbnail` 8、`admin-bone-filter` 8、
|
||||
`model-archive` 24、`mmd-vmd` 31、`preprocess` 25、`init-env` 16、
|
||||
`admin-port` 16、`access-log` 9、`vrm-inspector` 6)。
|
||||
|
||||
## 12. 首次启动的.env 引导(deploy/init-env.sh)与监听地址
|
||||
## 12. 首次启动的.env 引导(deploy/init-env.sh)、.env 预检与监听地址
|
||||
|
||||
- `deploy/env-lib.sh`: `.env` 语法预检。`install.sh` / `ctl.sh` 用
|
||||
`set -a; . deploy/.env` 载入配置时 shell 会真的执行该文件,值含空格却未加引号
|
||||
会被切成「赋值 + 命令」(实测报 `line 53: Miku.pmx: command not found`,退出码 127)。
|
||||
两个脚本在 source 之前调用预检,输出「哪一行、原文、改法」;
|
||||
模板中带空格的值统一写成 `MODEL_CONVERT_PMX="Hatsune Miku.pmx"`。
|
||||
|
||||
- `deploy/init-env.sh`:交互式逐项询问 `DB_HOST / DB_PORT / DB_USER / DB_PASS /
|
||||
DB_NAME / PORT / ADMIN_PORT / HOST`,回车保留默认;口令 `read -rs` 不回显、
|
||||
|
||||
Reference in New Issue
Block a user