Skip to content

部分web服务器无法处理以_开头的文件,导致响应404

#下划线#404#vite打包

如若在vue中使用了异步组件(defineAsyncComponent),则最终构建产物中可能会出现名为_plugin-vue_export-helper.hash.js的文件。 但部分web服务器无法处理以_开头的文件(如golang中的http.FileServer或Github Pages),这将导致响应404。

vite打包解决方案

js
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";

const INVALID_CHAR_REGEX = /[\x00-\x1F\x7F<>*#"{}|^[\]`;?:&=+$,]/g;
const DRIVE_LETTER_REGEX = /^[a-z]:/i;

export default defineConfig({
  plugins: [vue()],
  build: {
    rollupOptions: {
      output: {
        // https://github.com/rollup/rollup/blob/master/src/utils/sanitizeFileName.ts
        sanitizeFileName(fileName) {
          const match = DRIVE_LETTER_REGEX.exec(fileName);
          const driveLetter = match ? match[0] : "";
          return (
            driveLetter +
            fileName.slice(driveLetter.length).replace(INVALID_CHAR_REGEX, "")
          );
        },
      },
    },
  },
});
/src/technology/dateblog/2025/05/20250530-%E9%83%A8%E5%88%86web%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%97%A0%E6%B3%95%E5%A4%84%E7%90%86%E4%BB%A5_%E5%BC%80%E5%A4%B4%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%8C%E5%AF%BC%E8%87%B4%E5%93%8D%E5%BA%94404.html