Laravel部署Vercel CLI时出现Cannot set properties of undefined (setting 'mode')错误
解决Laravel部署Vercel时
npm run build报"Cannot set properties of undefined (setting 'mode')"的问题 这个错误本质是前端构建工具(Laravel当前默认用Vite)执行时,某段代码试图给一个未定义的对象设置mode属性导致的,下面是具体排查和修复方向:
1. 检查Vite配置文件(vite.config.js)
- 先确认配置文件有没有正确导出配置对象,别漏写
export default - 如果你手动修改过Laravel Vite插件的配置,比如写了
laravel({ mode: xxx }),要确保xxx不是undefined。比如本地能正常获取process.env.NODE_ENV,但Vercel构建时可能没注入,换成import.meta.env.MODE或者直接指定mode: 'production'试试
2. 排查依赖版本问题
- 执行
npm list vite查看Vite和laravel-vite-plugin的版本是否匹配,Laravel 10对应Vite 4.x,Laravel 9对应Vite 3.x,版本不兼容很容易出问题 - 要是版本不对,直接删除
node_modules和锁文件重装:rm -rf node_modules package-lock.json npm install
3. 核对环境变量
- Vercel构建时的环境和本地不一样,检查
.env或者Vercel控制台里的APP_ENV是不是设成了production - 注意Vite只会加载
.env里带VITE_前缀的变量,别在配置里直接用没前缀的环境变量,不然可能读不到导致undefined
4. 查看完整报错栈找根源
别只盯着那句错误提示,往上翻Vercel的构建日志,找到完整的调用栈,看是哪个文件哪行代码抛出的错误。比如要是某个第三方插件的问题,要么更新插件要么换替代方案
5. 本地复现调试
先在本地执行npm run build,要是也能复现,用Node.js调试工具定位:
node --inspect-brk node_modules/vite/bin/vite.js build
然后用Chrome的chrome://inspect连接调试,就能精准找到哪个对象是undefined了
内容的提问来源于stack exchange,提问作者Roihan Adhen
相关产品推荐
相关产品推荐

