fix: 还原路由为动态 () => import(...) 以配合 batiao-sdk dat 解密架构,补全 dat/wasm MIME 类型并实现 assets 文件的智能同名 Hash 模糊匹配降级服务

This commit is contained in:
tangxinyue 2026-07-24 16:01:44 +08:00
parent 4ad5489b83
commit d17134b63e
3 changed files with 97 additions and 20 deletions

View File

@ -67,3 +67,74 @@
[2026-07-22 11:53:07,318] [INFO] [D:\AAA-Code\模拟器pc端\frontend\service\core\router\index.cjs:28] GET 200 /api/user?nonce=fddaedee3575963db77e91737a2348ef&signature=8088d7e0f2529b98895a16838cf5a5be&timestamp=1784692387
[2026-07-22 11:53:07,321] [INFO] [D:\AAA-Code\模拟器pc端\frontend\service\core\router\index.cjs:28] GET 200 /api/user/config?nonce=08ef64bc62ffad421fe79bee1cbba2c5&signature=d13b6ce366e861bbce4924bd500e68c3&timestamp=1784692387
[2026-07-22 11:53:11,132] [INFO] [unknow:0] GET 200 /.well-known/appspecific/com.chrome.devtools.json
[2026-07-24 15:18:12,834] [INFO] [D:\AAA-Code\flaunt-web\service\main.cjs:13] server start at http://127.0.0.1:9270
[2026-07-24 15:18:18,987] [INFO] [unknow:0] GET 200 /
[2026-07-24 15:18:19,126] [INFO] [unknow:0] GET 200 /src/public/header/chat-icon.png
[2026-07-24 15:18:19,133] [INFO] [unknow:0] GET 200 /src/public/header/money-icon.png
[2026-07-24 15:18:19,134] [INFO] [unknow:0] GET 200 /src/public/header/zhengjianmoni.png
[2026-07-24 15:18:19,137] [INFO] [unknow:0] GET 200 /src/public/header/feijipiao.png
[2026-07-24 15:18:19,152] [INFO] [unknow:0] GET 200 /src/public/header/huochepiao.png
[2026-07-24 15:18:19,154] [INFO] [unknow:0] GET 200 /src/public/header/gouwuxiangqing.png
[2026-07-24 15:18:19,159] [INFO] [unknow:0] GET 200 /src/public/header/qinglvzheng.png
[2026-07-24 15:18:19,160] [INFO] [unknow:0] GET 200 /src/public/header/shipinliaotian.png
[2026-07-24 15:18:19,168] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:18:19,274] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user?nonce=8490d4f46901c8ab3a0efccb739823f8&signature=4848dd43be5437dc9f55eda4160f5325&timestamp=1784877499
[2026-07-24 15:18:19,276] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user/config?nonce=9228760ec0a8824626ae79ffe422f744&signature=be3cc8c86538b9688850dd641242336d&timestamp=1784877499
[2026-07-24 15:18:22,662] [INFO] [unknow:0] GET 200 /.well-known/appspecific/com.chrome.devtools.json
[2026-07-24 15:18:29,361] [INFO] [unknow:0] GET 200 /
[2026-07-24 15:18:29,414] [INFO] [unknow:0] GET 200 /.well-known/appspecific/com.chrome.devtools.json
[2026-07-24 15:18:29,498] [INFO] [unknow:0] GET 200 /src/public/header/chat-icon.png
[2026-07-24 15:18:29,500] [INFO] [unknow:0] GET 200 /src/public/header/money-icon.png
[2026-07-24 15:18:29,501] [INFO] [unknow:0] GET 200 /src/public/header/zhengjianmoni.png
[2026-07-24 15:18:29,504] [INFO] [unknow:0] GET 200 /src/public/header/feijipiao.png
[2026-07-24 15:18:29,507] [INFO] [unknow:0] GET 200 /src/public/header/huochepiao.png
[2026-07-24 15:18:29,511] [INFO] [unknow:0] GET 200 /src/public/header/gouwuxiangqing.png
[2026-07-24 15:18:29,516] [INFO] [unknow:0] GET 200 /src/public/header/qinglvzheng.png
[2026-07-24 15:18:29,517] [INFO] [unknow:0] GET 200 /src/public/header/shipinliaotian.png
[2026-07-24 15:18:29,548] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:18:29,632] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user?nonce=02e1ab51744f53f75201be4663edc439&signature=f51db09a8f56f3019014bb510e9c366b&timestamp=1784877509
[2026-07-24 15:18:29,633] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user/config?nonce=829e6d5ff23a60230ab491fbd91a8d68&signature=a02aa987d4045f223ac15e85a1eae28a&timestamp=1784877509
[2026-07-24 15:18:30,534] [INFO] [unknow:0] GET 200 /src/public/index/liaotianmoni.png
[2026-07-24 15:18:30,537] [INFO] [unknow:0] GET 200 /src/public/index/yuemoni.png
[2026-07-24 15:18:30,539] [INFO] [unknow:0] GET 200 /src/public/index/gongzidan.png
[2026-07-24 15:18:30,542] [INFO] [unknow:0] GET 200 /src/public/index/huochepiao.png
[2026-07-24 15:18:30,543] [INFO] [unknow:0] GET 200 /src/public/index/feijipiao.png
[2026-07-24 15:18:30,547] [INFO] [unknow:0] GET 200 /src/public/index/gouwumoni.png
[2026-07-24 15:18:30,548] [INFO] [unknow:0] GET 200 /src/public/index/zhengjian.png
[2026-07-24 15:18:30,549] [INFO] [unknow:0] GET 200 /src/public/index/service1.png
[2026-07-24 15:18:30,549] [INFO] [unknow:0] GET 200 /src/public/index/service2.png
[2026-07-24 15:18:30,551] [INFO] [unknow:0] GET 200 /src/public/index/service3.png
[2026-07-24 15:18:30,558] [INFO] [unknow:0] GET 200 /src/public/index/service4.png
[2026-07-24 15:19:12,527] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] POST 200 /api/weixin/qrcode?nonce=b6727049107e008b2e63cbc12cda3ad6&signature=c7120f776c011c651ae1bbeb63c3688c&timestamp=1784877552
[2026-07-24 15:20:03,271] [INFO] [unknow:0] GET 200 /.well-known/appspecific/com.chrome.devtools.json
[2026-07-24 15:22:16,719] [INFO] [unknow:0] GET 200 /
[2026-07-24 15:22:16,804] [INFO] [unknow:0] GET 200 /.well-known/appspecific/com.chrome.devtools.json
[2026-07-24 15:22:17,038] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:22:17,100] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user?nonce=a386744180b6810a02a510ec61b3708e&signature=1d786fc71e4d3ef4f12b96701623076b&timestamp=1784877737
[2026-07-24 15:22:17,102] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user/config?nonce=8e75fff05864de764c6249a5ae1db5a4&signature=3f5409e202809461007063c5b1ce810d&timestamp=1784877737
[2026-07-24 15:32:58,575] [INFO] [unknow:0] GET 200 /
[2026-07-24 15:32:58,607] [INFO] [unknow:0] GET 200 /.well-known/appspecific/com.chrome.devtools.json
[2026-07-24 15:32:58,788] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:32:58,881] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user?nonce=3bd30512f5ccac1753358ef2b6ef65b5&signature=ed9d023ae7bc762f38478fdd013d52bb&timestamp=1784878378
[2026-07-24 15:32:58,883] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user/config?nonce=dcde7d9c3e0cb1ddf385278093d72506&signature=373c39c9128dcbaaa566197607cecbda&timestamp=1784878378
[2026-07-24 15:32:59,907] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:00,792] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:03,744] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:04,693] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:05,343] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:05,777] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:06,127] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:06,427] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:06,924] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:07,668] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:08,982] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:09,699] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:11,017] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:12,235] [INFO] [unknow:0] GET 200 /gongzidan
[2026-07-24 15:33:12,273] [INFO] [unknow:0] GET 200 /.well-known/appspecific/com.chrome.devtools.json
[2026-07-24 15:33:12,508] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:12,617] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user?nonce=c88623a11886cf51ab0b6810dc50078d&signature=dc568fab00160c935e105efa40a07b10&timestamp=1784878392
[2026-07-24 15:33:12,619] [INFO] [D:\AAA-Code\flaunt-web\service\core\router\index.cjs:28] GET 200 /api/user/config?nonce=575039c20416cf8c53cc459c598a7892&signature=7baf398655df08889273ea13f594cc58&timestamp=1784878392
[2026-07-24 15:33:13,777] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:14,647] [INFO] [unknow:0] GET 200 /favicon.ico
[2026-07-24 15:33:18,057] [INFO] [unknow:0] GET 200 /favicon.ico

View File

@ -72,7 +72,9 @@ function getMimeType(filePath) {
woff: 'font/woff',
woff2: 'font/woff2',
ttf: 'font/ttf',
otf: 'font/otf'
otf: 'font/otf',
dat: 'application/octet-stream',
wasm: 'application/wasm'
}
if (ext && defaultMimes[ext]) {
return defaultMimes[ext]
@ -91,6 +93,20 @@ const matchFile = async (request, response) => {
const mappedPath = dist + cleanPath.replace(/^\/(src\/public|public|src)/, '')
if (fs.existsSync(mappedPath)) {
targetPath = mappedPath
} else if (cleanPath.startsWith('/assets/')) {
const filename = cleanPath.split('/').pop()
const prefix = filename.split('-')[0]
const ext = filename.split('.').pop()
if (prefix && ext) {
const assetsDir = dist + '/assets'
if (fs.existsSync(assetsDir)) {
const files = fs.readdirSync(assetsDir)
const matchedFile = files.find(f => f.startsWith(prefix + '-') && f.endsWith('.' + ext))
if (matchedFile) {
targetPath = assetsDir + '/' + matchedFile
}
}
}
}
}
fs.readFile(targetPath, (err, file) => {

View File

@ -1,26 +1,16 @@
import { createRouter, createWebHistory } from 'vue-router'
import { useUserStore } from '@/stores/user'
import IndexView from '@/views/index/index.vue'
import ChatEdit from '@/views/wxPage/ChatEdit.vue'
import BalanceEdit from '@/views/wxPage/BalanceEdit.vue'
import WorksView from '@/views/work/works.vue'
import AboutView from '@/views/About.vue'
import ProfileView from '@/views/Profile.vue'
import ArticleList from '@/views/article/list.vue'
import ArticleDetail from '@/views/article/detail.vue'
import GongZiDan from '@/views/other/gongzidan.vue'
const routes = [
{ path: '/', name: 'index', component: IndexView },
{ path: '/chat', name: 'Chat', component: ChatEdit, meta: { requiresAuth: false } },
{ path: '/balance', name: 'Balance', component: BalanceEdit, meta: { requiresAuth: false } },
{ path: '/works', name: 'Works', component: WorksView, meta: { requiresAuth: true } },
{ path: '/about', name: 'About', component: AboutView },
{ path: '/profile', name: 'Profile', component: ProfileView, meta: { requiresAuth: true } },
{ path: '/article', name: 'Article', component: ArticleList },
{ path: '/article-detail', name: 'ArticleDetail', component: ArticleDetail },
{ path: '/gongzidan', name: 'GongZiDan', component: GongZiDan },
{ path: '/', name: 'index', component: () => import('@/views/index/index.vue') },
{ path: '/chat', name: 'Chat', component: () => import('@/views/wxPage/ChatEdit.vue'), meta: { requiresAuth: false } },
{ path: '/balance', name: 'Balance', component: () => import('@/views/wxPage/BalanceEdit.vue'), meta: { requiresAuth: false } },
{ path: '/works', name: 'Works', component: () => import('@/views/work/works.vue'), meta: { requiresAuth: true } },
{ path: '/about', name: 'About', component: () => import('@/views/About.vue') },
{ path: '/profile', name: 'Profile', component: () => import('@/views/Profile.vue'), meta: { requiresAuth: true } },
{ path: '/article', name: 'Article', component: () => import('@/views/article/list.vue') },
{ path: '/article-detail', name: 'ArticleDetail', component: () => import('@/views/article/detail.vue') },
{ path: '/gongzidan', name: 'GongZiDan', component: () => import('@/views/other/gongzidan.vue') },
]
const router = createRouter({