You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vite启动开发服务器遇EPERM权限错误及宿主硬盘扫描问题

问题分析与解决方案

为什么Vite会扫描宿主硬盘?

你遇到的/var/www/html/rootfs/host_mnt/c是Docker容器内映射到Windows宿主硬盘的路径。Vite默认会递归扫描项目工作区下的所有文件用于热更新监听,而你的devcontainer配置中工作区路径存在输入错误,加上Laravel Vite插件的refresh功能会扩大文件监听范围,导致Vite意外扫描到宿主硬盘的挂载目录,触发Windows文件系统的权限限制,抛出EPERM错误。

解决方法

1. 修复devcontainer工作区路径

你的devcontainer.json中workspaceFolder存在错误字符串/var/your textwww/html,这会导致工作区识别异常,修正为正确路径:

"workspaceFolder": "/var/www/html"

2. 精准配置Vite忽略规则

之前的忽略规则匹配范围不足,改为绝对路径或更严格的glob模式,确保Vite跳过宿主挂载目录:

import {defineConfig} from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from '@vitejs/plugin-vue';

export default defineConfig({
    plugins: [
        laravel({
            input: 'resources/js/app.js',
            refresh: true,
        }),
        vue({
            template: {
                transformAssetUrls: {
                    base: null,
                    includeAbsolute: false,
                },
            },
        }),
    ],
    server: {
        watch: {
            ignored: [
                '/var/www/html/rootfs/**/*',
                '**/host_mnt/**/*',
            ],
        }
    }
});

3. 正确配置容器权限(避免修改宿主文件)

不要执行chown -R 1000:1000 /var/www/html,Windows NTFS文件系统不支持Unix权限修改。在docker-compose.yml中通过用户ID匹配来解决权限问题:

services:
  mangrove:
    # 其他原有配置
    volumes:
      - ./:/var/www/html:delegated
    user: "${UID:-1000}:${GID:-1000}"

这样容器内的sail用户会与宿主用户的UID/GID对齐,避免权限冲突。

4. 清理项目内的无效目录

检查/var/www/html下是否存在rootfs目录,如果是误创建的,直接删除该目录,从根源上阻止Vite扫描到宿主挂载路径。


内容的提问来源于stack exchange,提问作者Drake Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:55:16