Ver Fonte

fix: vite

Lee há 3 semanas atrás
pai
commit
0dd2fc96fc
2 ficheiros alterados com 17 adições e 42 exclusões
  1. 2 42
      src/components/view_file/vendors/pdf/PdfView.vue
  2. 15 0
      vite.config.ts

+ 2 - 42
src/components/view_file/vendors/pdf/PdfView.vue

@@ -20,48 +20,9 @@
 <script setup>
 import { ref, onMounted } from "vue"
 import * as PDF from "pdfjs-dist"
-// 引入 Vite 识别的 worker URL(处理哈希路径)
-import localWorkerUrl from "pdfjs-dist/build/pdf.worker.mjs?url"
+import pdfWorkerUrl from "pdfjs-dist/build/pdf.worker.mjs?url"
 
-let workerBlobUrl = null
-
-const initWorker = async () => {
-  if (workerBlobUrl) return
-
-  const pdfjsVersion = PDF.version
-  const urls = [
-    // 1. 优先使用 CDN,规避所有本地服务器配置问题
-    `https://cdn.jsdelivr.net/npm/pdfjs-dist@${pdfjsVersion}/build/pdf.worker.min.mjs`,
-    `https://unpkg.com/pdfjs-dist@${pdfjsVersion}/build/pdf.worker.min.mjs`,
-    // 2. 本地备选:Vite 处理后的路径
-    localWorkerUrl,
-    // 3. 库模式下的路径
-    new URL("./pdf.worker.js", import.meta.url).toString(),
-  ]
-
-  let lastError = null
-  for (const url of urls) {
-    try {
-      const response = await fetch(url)
-      if (!response.ok) continue
-
-      const arrayBuffer = await response.arrayBuffer()
-      // 强制指定为 ESM 模块
-      const blob = new Blob([arrayBuffer], { type: "text/javascript" })
-      workerBlobUrl = URL.createObjectURL(blob)
-      PDF.GlobalWorkerOptions.workerSrc = workerBlobUrl
-      console.log("PDF Worker loaded successfully from:", url)
-      return
-    } catch (e) {
-      lastError = e
-      continue
-    }
-  }
-
-  console.error("All PDF worker paths failed", lastError)
-  // 最后保底:直接尝试 localWorkerUrl
-  PDF.GlobalWorkerOptions.workerSrc = localWorkerUrl
-}
+PDF.GlobalWorkerOptions.workerSrc = pdfWorkerUrl
 
 const props = defineProps({
   data: Array,
@@ -97,7 +58,6 @@ const scaleX = () => {
 }
 
 const loadFile = async () => {
-  await initWorker()
   pdfDoc = await PDF.getDocument(props.data).promise
   pdf_pages.value = pdfDoc.numPages
   renderPage()

+ 15 - 0
vite.config.ts

@@ -88,5 +88,20 @@ export default defineConfig(({ mode }) => {
     worker: {
       format: "es",
     },
+    build: {
+      rollupOptions: {
+        output: {
+          chunkFileNames: "assets/[name]-[hash].js",
+          entryFileNames: "assets/[name]-[hash].js",
+          assetFileNames: (assetInfo: any) => {
+            const name = assetInfo.name || ""
+            if (name.endsWith(".mjs") || name.includes("pdf.worker")) {
+              return "assets/[name]-[hash].js"
+            }
+            return "assets/[name]-[hash].[ext]"
+          },
+        },
+      },
+    },
   }
 })