Laravel博客项目app.js报错:Uncaught ReferenceError: require未定义
解决Laravel Echo中
require is not defined的报错 报错原因是浏览器环境不支持Node.js专属的CommonJS语法require(),Laravel当前默认使用Vite作为构建工具,只支持ES模块的import/export语法,所以得把代码里的require替换成ES模块的导入方式。
修改后的完整代码如下:
import './bootstrap'; import Echo from "laravel-echo"; import { io } from 'socket.io-client'; window.io = io; window.Echo = new Echo({ broadcaster: 'socket.io', host: window.location.hostname + ':6001', });
核心改动就是把window.io = require('socket.io-client');拆成两步:
- 用ES模块语法导入socket.io-client的
io对象 - 再把
io挂载到window对象上,保证Echo能正常调用
这样修改后,重新运行构建命令(比如npm run dev或者npm run build),浏览器就能正确识别模块导入语法,不会再出现require is not defined的错误。
内容的提问来源于stack exchange,提问作者Hossam
相关产品推荐
相关产品推荐

