- 打包完成后在包内执行 require('./server/routes/index.js'),缺任何根模块直接失败 - 避免再发出启动即 Cannot find module 的残缺包
@@ -42,6 +42,17 @@ if /i "%~1"=="--with-data" (
)
+pushd "%OUT%"
+node -e "require('./server/routes/index.js')" >nul 2>nul
+if errorlevel 1 (
+ echo 打包失败:分发包缺少运行期模块,请检查根目录 *.js 是否完整。
+ popd
+ rmdir /s /q "%OUT%"
+ pause
+ exit /b 1
+)
+popd
+
powershell -NoProfile -Command "Compress-Archive -LiteralPath '%OUT%' -DestinationPath '%ZIP%' -Force"
if exist "%ZIP%" rmdir /s /q "%OUT%"
@@ -49,6 +49,13 @@ if [ "$WITH_DATA" = "1" ] && [ -f data/ops.db ]; then
echo "已包含演示数据库:data/ops.db(请确认数据可外发)"
fi
+# 打包前自检:缺任何一个运行期模块都直接失败,避免发出坏包
+if ! ( cd "$OUT" && node -e "require('./server/routes/index.js')" >/dev/null 2>&1 ); then
+ echo "打包失败:分发包缺少运行期模块(请在包目录执行 node -e \"require('./server/routes/index.js')\" 查看具体缺失文件)"
+ rm -rf "$OUT"
+ exit 1
+fi
(
cd dist || exit 1
rm -f "$NAME.zip"