JavaScript/Vite.js多页应用build构建报EISDIR错误该如何解决?
问题根因与解决方案
EISDIR报错的核心原因是构建时Vite将你指定的home.html路径识别为目录而非文件,可按以下步骤排查解决:
- 确认文件系统正确性
打开项目根目录执行终端命令:ls -la pages/home,检查输出结果中home.html的类型标识:- 若开头为
d,说明误创建了同名目录,删除该目录后重新创建home.html文件即可 - 若开头为
-,说明文件本身正常,继续往下排查
- 若开头为
- 调整Vite配置
明确指定项目root参数,同时给路径补全相对位置符,避免路径解析偏差,修改后的配置如下:
const { resolve } = require("path"); const { defineConfig } = require("vite"); module.exports = defineConfig({ root: __dirname, build: { rollupOptions: { input: { main: resolve(__dirname, "./index.html"), login: resolve(__dirname, "./pages/login/login.html"), home: resolve(__dirname, "./pages/home/home.html"), }, }, }, });
- 依赖冲突修复
如果以上操作后仍报错,大概率是依赖版本兼容问题,执行以下命令重装依赖后重新构建即可:
rm -rf node_modules package-lock.json yarn.lock pnpm-lock.yaml npm install npm run build
登录权限控制方案
不需要额外引入插件,可直接在home.js头部添加登录态校验逻辑,未登录用户自动跳转回登录页,示例代码如下:
// home.js 入口逻辑 const userToken = localStorage.getItem('login_token') if (!userToken) { window.location.replace('/pages/login/login.html') }
内容的提问来源于stack exchange,提问作者Mickey Vershbow
相关产品推荐
相关产品推荐

